Как сделать так, чтобы класс или DLL, которые я создал, отображались на панели инструментов VS

Я знаю, что после того, как вы создадите UserControl, он автоматически появится на панели инструментов Visual Studio, поэтому вы можете перетаскивать его в любое время. Но как это сделать в невизуальном классе (например, BackgroundWorker или Timer)?

Я создал класс (названный StationMonitor), который имеет свойства и генерирует события. Я делюсь им со своими коллегами, и мы хотели убить время, отказавшись от программного создания экземпляра объекта. По сути, мы хотели, чтобы этот StationMonitor можно было перетаскивать из панели инструментов, такой как BackgroundWoker и Timer.

Я предполагаю, что нужно сделать что-то вроде ниже (или поправьте меня, если я ошибаюсь)

    [Something From Visual Studio="Something" version yada yada]
    public class StationMonitor {
       // everything here
    }

person morethanyell    schedule 01.08.2017    source источник
comment
Когда я создаю подкласс таймера, он также появляется в панели инструментов.   -  person TaW    schedule 02.08.2017


Ответы (1)


Чтобы включить невизуальный класс в набор инструментов, вам необходимо получить его из Component

using System.ComponentModel;
...   

class StationMonitor : Component
{
   ...   
   ...   
}

введите здесь описание изображения

Или, если вы не можете получить производный от класса, так как уже наследуете другой, реализуйте IComponent интерфейс, что, конечно, немного утомительнее..

Интересно читать здесь.

person TaW    schedule 02.08.2017
comment
Спасибо Тау! Я должен буду отметить это как ответ. Спасатель жизни. Однако я хотел бы сказать, что это помешало моему классу быть сериализуемым. Я больше не могу сохранять экземпляр объекта StationMonitor на свой жесткий диск. :'( - person morethanyell; 02.08.2017
comment
Хм, интересно. Я уверен, что это можно решить, но не могу сказать, как. Это может потребовать отдельного вопроса, imo. Но сначала взгляните на этот интересный ответ! - person TaW; 02.08.2017