我想寻求您的帮助。您会再次帮助新手上尉吗? :)
我有几个使用datagridview的Windows窗体。我想在所有表单上以相同的方式设置datagridviews的格式(例如AllowUserToAddRows = false;)。
为此,我创建了一个类MYFormatting和方法,如下所示。我将使用合成在多种形式上重复使用此方法。如果您能告诉我我的方法是否正确,我将不胜感激?
public class MyFormating
{
public void FormatDGV(DataGridView dgv)
{
dgv.AllowUserToAddRows = false;
dgv.AllowUserToDeleteRows = false;
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dgv.ColumnHeadersVisible = false;
dgv.RowHeadersVisible = false;
dgv.MultiSelect = false;
}
}
初始化新表格时
Form1 frmForm1 = new Form1(new MyFormating());
然后以每种形式,我将调用myFormat方法并传递datagridview。
public partial class Form1 : Form
{
private readonly MyFormating _myFormat;
public Managers(MyFormating myFormat)
{
InitializeComponent();
_myFormat = myFormat;
_myFormat.FormatDGV(dgvManagers);
将MyFormatting类保持不变,然后将Form1代码更改为以下内容,将得到相同的结果。这仍然构成吗?我应该做这样的事情还是约定,而是要遵循我上面描述的方式?
初始化新表格时
Managers frmManagers = new Managers();
然后以每种形式,我将创建一个新的MyFormatting实例并将datagridview传递给它的方法
public partial class Form1: Form
{
private readonly MyFormating _myFormat;
public Form1()
{
InitializeComponent();
myFormat = new MyFormating();
myFormat.FormatDGV(dgvManagers);
答案 0 :(得分:0)
我了解您的目的。 “扩展”是一种更实用的方法;
public static class UIExtensions
{
public static void FormatDGV(this DataGridView dgv)
{
dgv.AllowUserToAddRows = false;
dgv.AllowUserToDeleteRows = false;
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dgv.ColumnHeadersVisible = false;
dgv.RowHeadersVisible = false;
dgv.MultiSelect = false;
}
}
以及您的表单代码(加载或构造函数);
dgvManagers.FormatDGV();
答案 1 :(得分:0)
我建议您创建一个继承自DataGridView的新类。在此类中,只需根据需要在构造函数中设置属性。重建项目,您自己的DataGridView应该显示在工具箱中。只需将其放置在Form上,就像使用标准DataGridView一样。
具有预定义值的DataGridView的示例:
public class MyDataGridView: DataGridView
{
public MyDataGridView()
{
AllowUserToAddRows = false;
AllowUserToDeleteRows = false;
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
ColumnHeadersVisible = false;
RowHeadersVisible = false;
MultiSelect = false;
}
}
还有运行中的自定义DataGridView的屏幕截图: