如何使用从主窗体上的内置控件继承的自定义控件类?

时间:2011-04-17 08:20:08

标签: c# .net winforms datagridview custom-controls

我有一个继承自内置DataGridView控件的mydatagridview类,如下所示:

public class mydatagridview : DataGridView 
{
    protected override bool ProcessDataGridViewKey(KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter) 
        {
            this.ProcessTabKey(e.KeyData);
            return true;
        }
        return base.ProcessDataGridViewKey(e);
    }

    protected override bool ProcessDialogKey(Keys keyData)
    {
        if (keyData == Keys.Enter) 
        {
            this.ProcessTabKey(keyData);
            return true;
        }
        return base.ProcessDialogKey(keyData);
    }
}

现在我想在我的主要课程中使用它:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
}

我想在Datagridview1中使用myDatagridview:public partial class Form1:Form

我该怎么做?

3 个答案:

答案 0 :(得分:2)

您需要创建自定义控件类的实例,然后将该实例添加到表单的Controls集合中。例如:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // Create an instance of your custom control
        mydatagridview myDGV = new mydatagridview();

        // Add that instance to your form's Controls collection
        this.Controls.Add(myDGV);
    }
}

当然,您也可以从Designer中做同样的事情。它会在InitializeComponent()方法中自动插入与上面显示的代码非常相似的代码。

如果您的自定义控件在重建项目后未自动显示在工具箱中,请确保您enabled toolbox auto-population

  1. 从“工具”菜单中选择“选项”。
  2. 展开“Windows窗体设计器”类别。
  3. 将“AutoToolboxPopulate”属性设置为True。

    Set the AutoToolboxPopulate to True in VS Options

答案 1 :(得分:1)

如果我理解正确,并且我不确定我这样做,你可以像任何其他类型一样使用它:

mydatagridview mydatagrid = new mydatagridview();
this.Controls.Add(mydatagrid);

答案 2 :(得分:0)

在已经给出的答案旁边,应该可以将控件从工具箱拖放到表单中。

如果您创建用户控件或自定义控件并构建项目,则控件应显示在工具箱中。