【发布时间】:2012-11-26 11:42:04
【问题描述】:
我正在将 VB6 项目转换为 C#.net。
VB6代码是。
Dim ctlControl As VB.VBControlExtender
Dim objControl As DocSys.IControl
If blnRetVal Then
' get IControl interface
On Error Resume Next
Set objControl = ctlControl.object
blnRetVal = objControl.Load(strName, ndControl, objField, objTab.Model)
其中用户控件正在动态使用。
objControl 的类型是 IControl,它是一个接口。 IControl 在许多用户控件中实现,例如(按钮、复选框、地址等)。
我正在将此代码转换为 C#.net。
代码是
Control ctlControl = new Control();
DocSys.IControl objControl = default(DocSys.IControl);
if (blnRetVal)
{
objControl = (IControl)ctlControl;
blnRetVal = objControl.Load(strName, ndControl, objField, objTab.Model);
}
它显示一个异常ctlControl:
Cannot cast 'ctlControl' (which has an actual type of 'System.Windows.Forms.Control') to 'DocSys.IControl' DocSys.IControl
【问题讨论】:
-
在 C# 4.0 中,您使用 this, 关键字来访问 Extender 公开的当前表单的控件。
-
什么是VBControlExtender?不,文档并没有帮助我理解它。 :)