1

我花了最后一天左右的时间在 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”之类的布尔属性),但这正是我想要避免的。我的互操作经验相当少,因此我们将不胜感激。

4

1 回答 1

1

我很高兴看到你的回答......但我想我错过了一些东西。我按照您提供的 msdn 链接中的说明进行操作,在 VB6 方面,我可以访问 UserControl 上的字体属性,但是当我尝试(比如说)设置字体大小时,它不会影响方式文本被绘制。当我尝试在 VB.Net 端(在 Set Text 属性中)强制更改嵌入 TextBox 的字体大小时,我收到一条错误消息,提示 font.size 是 ReadOnly ...

有可用的工作示例吗?

于 2013-07-31T01:25:22.933 回答