VS'08 properties editor ToolStripMenuItem

bleyman

У ToolStripMenuItem есть эвент Click. Из кода он прекрасно ставится. Но когда я хочу его выставить в Формс Дезигнере, я с удивлением обнаруживаю, что в том проперти эдиторе, который появляется когда я тыкаю в Items у самого ContextMenuStrip, эвентов нет как класса. Вообще!
Это меня глючит или так всё и есть?
Бообще я нашёл воркараунд: если включено generate members, в проперти вьюере можно посмотреть и на айтемы тоже, в дропдауне сверху. В общей тусовке компонентов они не показываются, а там есть. Но всё равно как-то странно!

bleyman

Кстати!
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
Компилицо!
Почитал спеки, это в пункте 17.2 описано, общий синтаксис для attribute target, вообще говоря предназначенный чтобы глобальный атрибут к чему-нибудь специфическому применить, но вот и так тоже можно.
Прикольно...

klyv

а что ожидалось, если не секрет?..

klyv

зато если выбрать нужные элементы не в Edit items, а тупо на форме, то есть вкладочка events, на которой всё есть.

bleyman

Да, да, я так и написал, что в обычном проперти вьюере они тоже есть.
Но вообще непонятно, какого, собственно, их нет там.
(по поводу "return: " — ничего не ожидалось, я увидел такую запись первый раз в жизни и изрядно офигел.)

klyv

по поводу "return: "
Смысл аттрибутов в том, что их можно присобачить к любому объекту.
Потому и есть возможность указать, к какому именно.
Например, некоторые аттрибуты относятся ко всей сборке - и они очень полезны и удобнеы бывают.

aleks058

Попробуй стандартно-binary-сериализовать объект с подписчиками на его эвенты - узнаешь, что есть еще и [field:NonSerialized] и причём без него реально никак.

aleks058

Чо-та ты походу плагинов к студии переставил.
У меня все есть (студия 2008).

bleyman

У меня ContextMenuStrip, причём в компоненте, а не на форме. В результате визуально он не отображается, забираться ему в айтемы приходится кликая в, собственно, айтемс в его пропертях, и вот там-то почему-то нету эвентов.

Dasar

У меня ContextMenuStrip, причём в компоненте, а не на форме. В результате визуально он не отображается
ты его через дизайнер добавлял, или руками?
если через дизайнер, то он тогда должен визуализироваться в "списке" используемых компонентов, и по нему будут события

klyv

ему нужен не сам стрип, а жлементы его ;)

bleyman

=(
Как-то вы все совершенно зря считаете меня идиотом. Потому что получается наоборот.
У ToolStripMenuItem есть эвент Click. Из кода он прекрасно ставится. Но когда я хочу его выставить в Формс Дезигнере, я с удивлением обнаруживаю, что в том проперти эдиторе, который появляется когда я тыкаю в Items у самого ContextMenuStrip, эвентов нет как класса.

Из-за того, что кое-кому влом прочитать внимательно оба предложения, уже развелась дурацкая совершенно дискуссия, в которой мне рассказывают, как редактировать эвенты у элементов обычного менюстрипа или эвенты ContextMenuStrip. Спасибо, конечно...

Dasar

Из-за того, что кое-кому влом прочитать внимательно оба предложения, уже развелась дурацкая совершенно дискуссия,
потому что тебе стоило один раз сделать скриншот, поясняющий твою мысль, чем потом всем объяснять что тебя неправильно поняли.
так работает?


Dasar

сорри, оказывается ты так умеешь
Бообще я нашёл воркараунд: если включено generate members, в проперти вьюере можно посмотреть и на айтемы тоже, в дропдауне сверху. В общей тусовке компонентов они не показываются, а там есть. Но всё равно как-то странно!

Dasar

Бообще я нашёл воркараунд: если включено generate members, в проперти вьюере можно посмотреть и на айтемы тоже, в дропдауне сверху.
у меня получилось другое: что generate members - true, что generate members - false, в property box-е они в любом случае есть.
Оставить комментарий
Имя или ник:
Комментарий: