在ActiveX dll项目中创建一个List(对象),在Visual Basic 6.0中用于c#项目

时间:2012-02-19 17:38:36

标签: c# list vb6 components activex

我想在Visual Basic 6.0中的ActiveX组件项目中创建一个List。然后我会得到

来自c#项目的列表。

由于

1 个答案:

答案 0 :(得分:0)

使用c#,您可以创建自己的控件。你有不同的可能性。

  1. System.Windows.Forms.Control派生为课程并添加您的功能。这是最灵活,但最复杂的方法。
  2. 从现有控件中派生出类,接近您想要做的事情并进行调整(例如,通过覆盖OnPaint)。
  3. 在项目中添加UserControl。您可以在UserControl上放置其他控件,就像在表单上放置控件一样。
  4. 您可以在主程序集(.exe)中执行此操作;但是,如果在类库(.dll)中执行此操作,则可以像ActiveX控件一样使用它。在.NET中,您不需要ActiveX控件的“魔力”。控件只是派生自Control的类。


    我经常从ListBox派生我自己的控件并覆盖OnPaint,以便以不同的方式显示项目,添加图标,使用不同的颜色或在多行上显示文字。< / p>

    这是我用这种方式定制的ListBox的示例

    Example of customized 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