在多个Windows窗体中重复使用相同的方法

时间:2019-01-20 10:50:58

标签: c# winforms datagridview composition

我想寻求您的帮助。您会再次帮助新手上尉吗? :)

我有几个使用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);

2 个答案:

答案 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();

寻找扩展方法:https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

答案 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的屏幕截图:

DataGridView in Toolbox