Как сделать свойство сетки, как контекстное меню для кнопки? - PullRequest
1 голос
/ 12 августа 2010

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

1 Ответ

0 голосов
/ 12 августа 2010

Лучшая идея, вероятно, заключается в использовании элемента управления PropertyGrid для отображения свойств выбранного (нажатого) объекта: http://msdn.microsoft.com/en-us/library/system.windows.forms.propertygrid.aspx

http://msdn.microsoft.com/en-us/library/aa302326.aspx

Большая часть логики для "стандартных типов свойств", таких как String, Int ..., уже реализована в этом элементе управления

Но я бы не показывал это сразу по правому клику. Стандартный способ для всех приложений Windows - когда вы щелкаете правой кнопкой мыши по объекту, вы получаете контекстное меню, специфичное для этого объекта, и последний элемент обычно - «Свойства ...». После выбора этой опции будет отображаться сетка свойств.

Если вы хотите отобразить контекстное меню с помощью элемента управления PropertyGrid, я не уверен, что оно поддерживается с помощью элемента управления контекстным меню. Но один из способов сделать это - создать новую форму "PropertyGridForm" с этой PropertyGrid. Затем на вашем событии Object.CellMouseDown просто покажите эту форму, примерно так:

 private void Button1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
 {
  if (e.Button == MouseButtons.Right)
  {
    PropertyGridForm f = new PropertyGridForm();
    f.PropertyGrid.SelectedObject = Button1; // (or sender?) whatever you need
    f.Location = e.Location;
    f.Show(); //or ShowDialog? 
  }
 }

Вам нужно будет найти лучший способ закрыть эту форму. Сделаете ли вы на нем кнопку «Закрыть», закроете ее на событии «Выход», «Деактивировать событие»? Зависит от того, какое именно поведение вам нужно.

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