C# 创建动态按钮
我试图在我的应用程序中创建一个动态按钮。所以基本上我有这个代码,但是当我运行它时,我看不到另一个表单的底部。面板是空的。我在第一个表单中单击按钮创建底部,然后它必须在第二个表单的面板中显示按钮C# 创建动态按钮,c#,winforms,C#,Winforms,我试图在我的应用程序中创建一个动态按钮。所以基本上我有这个代码,但是当我运行它时,我看不到另一个表单的底部。面板是空的。我在第一个表单中单击按钮创建底部,然后它必须在第二个表单的面板中显示按钮 private void btnsend_Click(object sender, EventArgs e) { this.Hide(); Form wrr = new Interface(); wrr.Show(); createnutton(); } int i =
private void btnsend_Click(object sender, EventArgs e)
{
this.Hide();
Form wrr = new Interface();
wrr.Show();
createnutton();
}
int i = 0;
int x = 0;
private void createnutton()
{
Button btn = new Button();
btn.Location = new Point(3 + i, 14 + x);
btn.BackColor = System.Drawing.Color.Red;
btn.ForeColor = System.Drawing.Color.Yellow;
btn.Text = "Tabel" + libtno.Text;
btn.Click += new EventHandler(btn_Click);
panel3.Controls.Add(btn);
i += 10;
x += 10;
}
void btn_Click(object sender,EventArgs e)
{
MessageBox.Show("me");
}
您必须为按钮再设置一个属性“Visible=true”。您需要一个对所创建接口实例的引用。将
wrr
传递给您的createnutton
函数。为此,必须将panel3
的MODIFIERS属性更改为PUBLIC。您也不能引用具有泛型表单类型的表单。它必须是那种特定的形式类型,即Interface
(顺便说一句,这是一个可怕的名字,因为Interface
在C#中有不同的含义):
private void btn发送\u单击(对象发送者,事件参数e)
{
this.Hide();
接口wrr=新接口();
wrr.Show();
createnutton(wrr);//您正在将一个新按钮添加到当前表单中的panel3.Controls
。是否要将这些新控件添加到初始化为Form wrr=new Interface()的表单中;
?我正在尝试将其添加到另一个具有名称接口的表单中。那么,您必须从新表单的实例中调用该方法。首先,将类名从接口更改为其他名称(已使用接口的名称:)。假设名称为frmInterface
,则您有var wrr=new frmInterface();
。订阅表单的Load
事件,并从Load
处理程序调用CreateButton()
(此操作也重命名)。然后您可以从表单中的任何其他位置调用CreateButton()
(一个按钮。可能单击处理程序)这与此无关:当添加到容器中时,默认情况下新控件可见。BringToFront()
可能是需要的,但OP似乎在尝试完全其他的事情。出于学习的目的,如果您要以自己的方式来做。例如,通过单击旧表单上的按钮来创建动态按钮,以在新表单上创建新按钮。但为什么您首先要动态创建这些按钮?为什么它们不是cre我们需要更多关于“大画面”的信息来帮助您重新设计。因此,我设计了一个pos系统。当项目被添加并且表格没有立即关闭时,会有一个“发送”按钮,它将创建一个动态按钮,用于重新打开表格添加项目或关闭表格
private void btnsend_Click(object sender, EventArgs e)
{
this.Hide();
Interface wrr = new Interface();
wrr.Show();
createnutton(wrr); // <-- pass "wrr" to the function
}
int i = 0;
int x = 0;
private void createnutton(Interface frmInterface) // <-- parameter added
{
Button btn = new Button();
btn.Location = new Point(3 + i, 14 + x);
btn.BackColor = System.Drawing.Color.Red;
btn.ForeColor = System.Drawing.Color.Yellow;
btn.Text = "Tabel" + libtno.Text;
btn.Click += new EventHandler(btn_Click);
frmInterface.panel3.Controls.Add(btn); // <-- use the passed in form
i += 10;
x += 10;
}