singlepost

Как получить объект формы компонентом (Component) на C#? << На главную или назад  

Есть ли возможность получить объект формы или Parent -компонентом, унаследованным от Component (не путать с Control)? Этот компонент не отображается на форме, а только внизу, где вешаются всякие ToolStrip'ы. Очень надо получить форму (ссылку на ее) из контрола, на которую он как-бы и был посажен. Вот… Переопределять конструктор компонента не советуйте – ругается дизайнер VS. Присвоение через свойство недопустимо. Компонент сам должен все узнать. Вот :-)

6 ответов в теме “Как получить объект формы компонентом (Component) на C#?”

  1. 6
    Max Korsukov ответил:

    Спасибо за комменты! Есть еще хитрый вариант через Win32 API, но это не есть совсем хорошо.

  2. 5
    Алексей Голубев ответил:

    Понятно. Что-то подобное есть в DevExpress'овских контролах. Там есть компонент barManager. Именно компонент. Можно наляпать на форму кучу всяких менюшек и тулСтрипов (естественно того же производителя), у всех у них есть свойство BarManager, туда передается этот компонент и все они начинают работать сообща.
    Вот так и тебе придется переопределять стандартную кнопку и делать там свойство, куда будет присваиваться твой компонент. А чтобы это работало в дизайнере нужно с атрибутами поиграться.

  3. 4
    Max Korsukov ответил:

    Хотелось бы, чтоб компонент подсаживался к форме и перехватывал события кнопок. Но что-бы форма не знала ничего об этом и не надо было вручную передавать события. Через IContainer мучался, но никак…

  4. 3
    Алексей Голубев ответил:

    А зачем это нужно? Обычно необходимость взаимодействовать с главной формой решается через события. Правда, в этом случае, часть логики переносится в форму…

  5. 2
    Ванько Родригез ответил:

    Похоже, никак. Контейнер получить можно. В смысле, ссылку на IContainer.

  6. 1
    Андрей Куликов ответил:

    Началось блин :( ((

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.