Создание списка (объекта) в dll-проекте ActiveX в Visual Basic 6.0 для использования в проекте c # - PullRequest
0 голосов
/ 19 февраля 2012

Я хочу создать список в проекте компонента ActiveX в Visual Basic 6.0. Тогда я получу

список из проекта c #.

Спасибо

1 Ответ

0 голосов
/ 19 февраля 2012

С помощью c # вы можете создавать свои собственные элементы управления.У вас есть разные возможности сделать это.

  1. Получите как класс из System.Windows.Forms.Control и добавьте свою функциональность.Это наиболее гибкий, но самый сложный подход.
  2. Получите как класс из существующего элемента управления, который приближается к тому, что вы хотите сделать, и адаптируйте его (например, путем переопределения OnPaint).
  3. Добавьте UserControl в ваш проект.Вы можете разместить другие элементы управления на UserControl так же, как вы размещаете элементы управления на форме.

Вы можете сделать это в своей основной сборке (.exe);однако, если вы делаете это в библиотеке классов (.dll), вы можете использовать ее так же, как элемент управления ActiveX.В .NET вам не нужна «магия» элемента управления ActiveX.Элементы управления - это просто классы, которые являются производными от Control.


Я часто получаю свои собственные элементы управления из ListBox и переопределяю OnPaint, чтобы отображать элементы по-другому, добавляя значки,используя разные цвета или отображая текст в несколько строк.

Это пример 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.");
}

EDIT :

Чтобы использовать ActiveX, созданный с помощью VB6 в .NET, вам потребуется утилита командной строки TlbImp, предоставленная в .NET SDK.Назовите это так:

    tlbimp MyActiveX.dll /out:MyCsharp.dll

Тогда вы можете использовать MyCsharp.dll, как и любой другой .NET DLL.См. C # и ActiveX DLL Anand Narayanaswamy .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...