我想在Visual Basic 6.0中的ActiveX组件项目中创建一个List。然后我会得到
来自c#项目的列表。
由于
答案 0 :(得分:0)
使用c#,您可以创建自己的控件。你有不同的可能性。
System.Windows.Forms.Control
派生为课程并添加您的功能。这是最灵活,但最复杂的方法。OnPaint
)。UserControl
。您可以在UserControl
上放置其他控件,就像在表单上放置控件一样。您可以在主程序集(.exe)中执行此操作;但是,如果在类库(.dll)中执行此操作,则可以像ActiveX控件一样使用它。在.NET中,您不需要ActiveX控件的“魔力”。控件只是派生自Control
的类。
我经常从ListBox
派生我自己的控件并覆盖OnPaint
,以便以不同的方式显示项目,添加图标,使用不同的颜色或在多行上显示文字。< / p>
这是我用这种方式定制的ListBox
的示例
修改强>:
您是否在寻找Collection
类型VB6的替代方案?在C#或VB.NET中,您使用System.Collections.Generic
命名空间的集合。 List<T>
表示列表,Dictionary<TKey,TValue>
表示存储键/值对。
列表示例:
var list = new List<string>();
list.Add("Hello");
list.Add("World");
Console.WriteLine(list[0]); // ==> "Hello"
Console.WriteLine(list[1]); // ==> "World"
foreach (string s in list) {
Console.WriteLine(s);
}
// Output: Hello
// World
键值对的示例:
var dict = new Dictionary<string,int>();
dict.Add("Sunday", 1);
dict.Add("Monday", 2);
dict.Add("Tuesday", 3);
dict.Add("Wednesday", 4);
dict.Add("Thursday", 5);
dict.Add("Friday", 6);
dict.Add("Saturday", 7);
Console.WriteLine(dict["Wednesday"]); // ==> 4
int daynum;
if (dict.TryGetValue("Christmas", out daynum)) {
Console.WriteLine("Christmas has the day number {0}.", daynum);
} else {
Console.WriteLine("Christmas is not a weekday.");
}
修改强>:
为了使用在.NET中使用VB6创建的ActiveX,您需要.NET SDK中提供的命令行实用程序TlbImp
。像这样称呼它
tlbimp MyActiveX.dll /out:MyCsharp.dll
然后您可以像任何其他.NET dll一样使用MyCsharp.dll
。请参阅C# and ActiveX DLLs by Anand Narayanaswamy。