如何为按钮的上下文菜单创建属性网格?

时间:2010-08-12 10:04:48

标签: c# winforms

如何为按钮的上下文菜单创建属性网格? 所以当右键单击按钮时。属性网格将是可见的,当点击其他地方时,将隐藏。

1 个答案:

答案 0 :(得分:0)

最好的想法可能是使用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控件的上下文菜单,我不确定上下文菜单控件是否支持它。但其中一种方法是使用PropertyGrid创建新的表单“PropertyGridForm”。然后,在您的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? 
  }
 }

您必须找到关闭该表单的最佳方式。你会在它上面点击关闭按钮,在离开事件时关闭它,停用事件吗?取决于你需要的行为。