Лучшая идея, вероятно, заключается в использовании элемента управления 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?
}
}
Вам нужно будет найти лучший способ закрыть эту форму. Сделаете ли вы на нем кнопку «Закрыть», закроете ее на событии «Выход», «Деактивировать событие»? Зависит от того, какое именно поведение вам нужно.