С помощью c # вы можете создавать свои собственные элементы управления.У вас есть разные возможности сделать это.
- Получите как класс из
System.Windows.Forms.Control
и добавьте свою функциональность.Это наиболее гибкий, но самый сложный подход. - Получите как класс из существующего элемента управления, который приближается к тому, что вы хотите сделать, и адаптируйте его (например, путем переопределения
OnPaint
). - Добавьте
UserControl
в ваш проект.Вы можете разместить другие элементы управления на UserControl
так же, как вы размещаете элементы управления на форме.
Вы можете сделать это в своей основной сборке (.exe);однако, если вы делаете это в библиотеке классов (.dll), вы можете использовать ее так же, как элемент управления ActiveX.В .NET вам не нужна «магия» элемента управления ActiveX.Элементы управления - это просто классы, которые являются производными от Control
.
Я часто получаю свои собственные элементы управления из ListBox
и переопределяю OnPaint
, чтобы отображать элементы по-другому, добавляя значки,используя разные цвета или отображая текст в несколько строк.
Это пример 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 .