如何将按钮添加到特定的DataGridView C# WinForms

4ktjp1zp  于 2022-12-30  发布在  C#
关注(0)|答案(1)|浏览(215)

大家好,我是C#和WinForms的新手。就像这个图片所示,我在DataGridView_A中添加了DataGridView_B,其中DataGridView_B通常是不可见的,只有在调用某个函数时才可见。到这一步为止,一切都运行良好。然后我决定在DataGridView_B中添加一个按钮Button_Close,这样当我不需要DataGridView_B时,我可以点击按钮,它将再次不可见。
我用来把B绑定到A的代码,运行良好:

this.DataGridView_A.Controls.Add(this.DateGridView_B);
...
this.DateGridView_B.Dock = System.Windows.Forms.DockStyle.Bottom;

我用来将按钮绑定到B的代码,它有问题:

this.DataGridView_B.Controls.Add(this.Button_Close);

只要我把button绑定到B上,这个按钮就消失了,然后我试着注解掉这行代码,这个按钮还是不见了。
有人知道为什么代码会这样吗?
注意:按钮是由Toolbox手动添加的,而不是编程添加的。

bmvo0sr5

bmvo0sr51#

当您从Toolbox放入项而不是以编程方式添加项时,它们的位置绝对位于窗体的左上角。
在您的示例中,我将做以下假设:
DataGridView_A是400 x 800像素。
DataGridView_B是400 x 300像素。
Button_Close位于Point(350,510)处。(相对于窗体的左上角)
当您以编程方式将Button_Close添加到DataGridView_B时,按钮的位置会被保留,但方式是错误的。(350,510),而不是相对于DataGridView_BPoint。这使Button_Close位于Point(350,510)相对于DataGridView_B,因此它不在视图中。
这可以通过添加按钮并将其位置移动到所需位置来修复。示例:

//Add DataGridView_B to DataGridView_A
this.DataGridView_A.Controls.Add(this.DataGridView_B);
this.DataGridView_B.Dock = DockStyle.Bottom;

//Add Button_Close to DataGridView_B
this.DataGridView_B.Controls.Add(this.Button_Close);
//10 px margin on top and right
this.Button_Close.Location = new Point(this.DataGridView_B.Width - (this.Button_Close.Width + 10), 10);

相关问题