【发布时间】:2012-03-10 05:21:30
【问题描述】:
我想在 Visual Basic 6.0 的 ActiveX 组件项目中创建一个列表。然后我会得到
来自 c# 项目的列表。
谢谢
【问题讨论】:
-
好的。什么问题?
标签: c# list vb6 components activex
我想在 Visual Basic 6.0 的 ActiveX 组件项目中创建一个列表。然后我会得到
来自 c# 项目的列表。
谢谢
【问题讨论】:
标签: c# list vb6 components activex
使用 c#,您可以创建自己的控件。你有不同的可能性来做到这一点。
System.Windows.Forms.Control 派生为类并添加您的功能。这是最灵活但也最复杂的方法。OnPaint)。UserControl 添加到您的项目中。您可以在 UserControl 上放置其他控件,就像在表单上放置控件一样。您可以在主程序集 (.exe) 中执行此操作;但是,如果您在类库 (.dll) 中执行此操作,则可以像使用 ActiveX 控件一样使用它。在 .NET 中,您不需要 ActiveX 控件的“魔力”。控件只是派生自Control 的类。
我经常从ListBox 派生我自己的控件并覆盖OnPaint,以便通过添加图标、使用不同颜色或在多行上显示文本以不同的方式显示项目。
这是我以这种方式自定义的ListBox 示例
编辑:
您是否正在寻找 VB6 的 Collection 类型的替代品?在 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。像这样称呼它
然后您可以像使用任何其他 .NET dll 一样使用MyCsharp.dll。见C# and ActiveX DLLs by Anand Narayanaswamy。
【讨论】: