我正在尝试将一些 VBA (outlook) 转换为 c# 以作为插件。与之斗争。该代码更改了 Outlook 中回复/全部回复/转发表单上的帐户下拉列表。现在我必须输入更多无用的东西,因为编辑器抱怨代码多于文本。我已经转换了 99%。
public string Set_Account(string AccountName, Outlook.MailItem M)
{
string tempSet_Account = null;
Outlook.Inspector OLI = null;
string strAccountBtnName = null;
int intLoc = 0;
const int ID_ACCOUNTS = 31224;
Office.CommandBars CBs = null;
Office.CommandBarPopup CBP = null;
Office.CommandBarControl MC = null;
M.Display();
OLI = M.GetInspector;
if (OLI != null)
{
CBs = OLI.CommandBars;
CBP = CBs.FindControl(, ID_ACCOUNTS); // This line errors and I can't find what goes in it to make it work
CBP.Reset();
if (CBP != null)
{
foreach (Office.CommandBarControl MCWithinLoop in CBP.Controls)
{
MC = MCWithinLoop;
intLoc = MCWithinLoop.Caption.IndexOf(" ") + 1;
if (intLoc > 0)
{
strAccountBtnName = MCWithinLoop.Caption.Substring(intLoc);
}
else
{
strAccountBtnName = MCWithinLoop.Caption;
}
if (strAccountBtnName == AccountName)
{
MCWithinLoop.Execute();
tempSet_Account = AccountName;
break;
}
}
}
}
tempSet_Account = "";
MC = null;
CBP = null;
CBs = null;
OLI = null;
return tempSet_Account;
}
我在这条线上遇到了麻烦:
CBP = CBs.FindControl(, ID_ACCOUNTS);
它失败并说它需要一个类型“MsoControlType”,但我找不到任何适合的控件类型。似乎在 VBA 中你可以找到控制只有一个条目(另一个是空白)在 C# 中你需要 2。我把它放在编译器中的每一件事都抱怨
无法将 Microsoft.Office.Core.MsoControlType.msoCommandBarControl 转换为 ...msoCommandBarPopup
但我在任何地方都找不到对它的引用。