我在整个WinForms应用程序中都有datagridviews。
我希望能够为所有datagridview添加功能,而不必在每个表单上编写代码。一个地方的一个方法/事件被添加到所有现有网格中。
我希望能够右键单击并显示一个上下文菜单,允许显示具有标准导出选项的通用菜单。
我知道我可以使用扩展方法添加功能,但我不认为这是针对这种情况的正确方法。
我想如果我不必从datagridview类派生一个新类并将我的功能添加到派生类中,那么我将不得不将我的所有dgv更改为派生的dgv类。 / p>
我可以添加或扩展现有的datagridview类并添加全局通用方法和事件来实现通用弹出菜单
希望这有意义......
答案 0 :(得分:1)
参考这篇文章,它有导出到Excel选项和其他几个, 希望这会帮助你。 http://www.codeproject.com/Articles/26263/Extending-the-DataGridView
答案 1 :(得分:1)
如果您不想派生自己的DGV课程,那么您可以创建一个帮助类,它可以完成您想要的所有内容。
你必须注册每个DGV - 毕竟必须与扩展功能连接。注册可以在表格中自动进行。构造
在registerDGV(DataGridview DGV)
方法中,帮助者类将订阅您想要的所有DGV事件并完成您需要的所有装饰。
这只是一个很小的例子:
public Form1()
{
InitializeComponent();
DGVhelper.registerDGV(dataGridView1);
}
DGVhelperClass DGVhelper= new DGVhelperClass ();
class DGVhelperClass
{
public void registerDGV(DataGridView DGV)
{
DGV.MouseDown += DGV_MouseDown;
//...
DGV.BackgroundColor = Color.LightSlateGray;
//..
}
void DGV_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right) MessageBox.Show("just", "for show");
}
}
如果不需要状态信息,您可能需要创建帮助程序类static
。