我花了最后一天左右的时间在 VB.NET 中编写了一个简单的控件库,以便在现有的 vb6 项目中使用。我的大部分事情都在工作;我的控件显示在 vb6 工具箱中,事件工作等。我当前的问题是尝试处理在 vb6 和 .NET 之间传递复杂对象。
例如,.NET TextBox 的 Font 属性。现在,vb6 使用 stdFont 对象,而 .NET(显然)使用 System.Drawing.Font 类型。我对这个项目的目标是使更改从 vb6 方面变得透明。我想为每个控件完全模拟 vb6 界面,以最大限度地减少添加新控件时需要更改的代码,但我被困在这里。这是一个示例(.NET):
Public Overloads Property Font() As stdole.StdFont
Get
Return ???
End Get
Set(ByVal value As stdole.StdFont)
Dim style As FontStyle = GetFontStyle(value)
TextBox1.Font = New Font(value.Name, value.Size, style, GraphicsUnit.Pixel, value.Charset)
End Set
End Property
如您所见,“吸气剂”是问题所在。如果无法返回文本框的 Font 属性,如何在此处模仿 vb6 界面?出于明显的原因,我不想返回 System.Drawing.Font 的 stdFont 副本。
现在,我可以添加诸如 SetBold()、SetItalic() 和 SetFont() 之类的方法(或诸如“FontIsBold”之类的布尔属性),但这正是我想要避免的。我的互操作经验相当少,因此我们将不胜感激。