我正在尝试将一段代码从VB转换为C#,但遇到了一行代码问题。
VB代码:
Dim tsAV As System.Windows.Forms.ToolStrip =
CType(objHost.FormMain.Controls("tsMain"), Windows.Forms.ToolStrip)
C#中的代码:
System.Windows.Forms.ToolStrip tsAV =
(System.Windows.Forms.ToolStrip)objHost.FormMain;
我的问题出现在FormMain方法上。当我使用VB代码时,我可以获得Controls方法但在C#中我不能。我使用两种方式使用相同的接口DLL。
我做错了吗? DLL是否可以包含仅在VB中工作的某些内容?
答案 0 :(得分:2)
您应该可以将其用作C#代码:
// using System.Windows.Forms;
ToolStrip tsAV = (ToolStrip)objHost.FormMain().Controls["tsMain"];
^^^^^^^^^^^^^^^^^^^
在您的示例中,您试图将Form
转换为ToolStrip
,但这不会起作用。
答案 1 :(得分:0)
如果您尝试在c#表单中检索ToolStrip,则可以使用以下代码。这假设ToolStrip名称是“tsAV”,并且您正在FormMain
内的方法执行此代码(可能是主窗体的类名)。
using System.Windows.Forms;
...
ToolStrip tsAV = (ToolStrip)Controls["tsMain"];
从表单外部,您可以使用以下代码找到ToolStrip:
using System.Windows.Forms;
...
FormMain form = new FormMain();
ToolStrip tsAV = (ToolStrip)form.Controls["tsMain"];
更新:假设objHost
是排序控制器,FormMain
是一个字段或属性名称,它返回表单的实例,而不是类名,您可以使用以下内容:
using System.Windows.Forms;
...
ToolStrip tsAV = (ToolStrip)objHost.FormMain.Controls["tsMain"];