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

C# 如何为按钮创建类似属性网格的上下文菜单?,c#,winforms,C#,Winforms,如何为按钮创建类似属性网格的上下文菜单? 所以当右键点击按钮。属性网格将可见,当单击其他位置时,该属性网格将隐藏。最好使用PropertyGrid控件来显示选定(单击的)对象属性: 大多数“标准属性类型”的逻辑,如字符串、Int。。。已在此控件中实现 但我不会在右键单击时立即显示它。所有windows应用程序的标准方式是,当您右键单击某个对象时,您将获得该对象的特定上下文菜单,最后一项通常是“属性…”。选择该选项后,将显示特性栅格 如果您想使用PropertyGrid控件显示上下文菜单,我不

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

最好使用PropertyGrid控件来显示选定(单击的)对象属性:

大多数“标准属性类型”的逻辑,如字符串、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? 
  }
 }
您必须找到关闭该表单的最佳方式。您是否会在其上设置关闭按钮、在休假事件中关闭它、停用事件?这取决于你到底需要什么样的行为