C#自定义控件实现现有控件

时间:2017-02-17 00:24:07

标签: c# winforms custom-controls

我已经构建了一个继承自datagridview的自定义控件。我需要添加其他几个控件(一些文本框,按钮等),但是因为我从datagridview继承它占用了整个矩形(绘制区域)。 我一直在寻找一个示例或方法来执行以下操作: 绘制datagridview(自定义控件),同时在其下面绘制几个按钮。

我觉得我需要继承默认的Windows窗体控件,然后在其中的一部分和另一部分的按钮上绘制datagridview。但是在我的搜索中,我还没有找到办法做到这一点。也许我正在寻找错误的问题,或者我正在以错误的方式看待它。如何创建一个自定义控件,其上绘制了几个现有控件?

1 个答案:

答案 0 :(得分:2)

您可以从TableLayoutPanel继承并在一个单元格中添加自定义DataGridView控件,在其他单元格中添加其他所需控件。

这将允许您使用此类作为一个包罗万象的控件,使用内置的DataGridView控件及其中包含的必需按钮。

例如:

// Using Statements.

namespace MyNameSpace
{
    public class MyControl : TableLayoutPanel
    {
        // Declare instances of the controls you need.
        CustomDataGridView myDataGridControl;
        Button button1;
        Button button2;
        // etc...

        public MyControl()
        {
            // Define TableLayoutPanel properties here,
            // e.g. columns, rows, sizing...

            myDataGridControl = new CustomDataGridView();
            // Define your custom DataGridView here.

            button1 = new Button();
            // First button properties.

            button2 = new Button();
            // Second button properties.

            // Assign these controls to TableLayoutPanel
            // in the specified cells.
            Controls.Add(myDataGridControl, 0, 0);
            Controls.Add(button1, 0, 1);
            Controls.Add(button2, 1, 1);
        }

        // Methods etc...
    }
}