C# 动态添加使用C中窗体属性的窗体和按钮#
我想动态创建一个表单,然后向表单添加一个新按钮(也是动态的)。 现在我想写一个关于按钮点击事件的代码,如何使用表单属性。(它会产生范围问题。),我是否应该将我的表单声明为public。。。?[程序代码] ][1] 当我写C# 动态添加使用C中窗体属性的窗体和按钮#,c#,C#,我想动态创建一个表单,然后向表单添加一个新按钮(也是动态的)。 现在我想写一个关于按钮点击事件的代码,如何使用表单属性。(它会产生范围问题。),我是否应该将我的表单声明为public。。。?[程序代码] ][1] 当我写myform.Hide()时输入 按钮的my click事件生成错误。您正在单击事件中创建myForm。变量具有方法级别的作用域。尝试将其声明为类作用域变量,并在单击事件中新建它 Form myform; //Notice that I have removed your de
myform.Hide()时代码>输入
按钮的my click事件生成错误。您正在单击事件中创建myForm。变量具有方法级别的作用域。尝试将其声明为类作用域变量,并在单击事件中新建它
Form myform; //Notice that I have removed your declaration from your click event
//this variable now has visibility throughout the entire class.
private void button3_Click(object sender, EventArgs e)
{
myForm = new Form(); // I have instantiated it here
myform.Show();
myform.Text = "New Dynamic Window";
Button hide = new Button();
hide.Text = "Hide";
hide.Show();
hide.Location = new Point(50, 50);
hide.Click += hide_Click;
myform.Controls.Add(hide);
}
void hide_Click(object sender, EventArgs e)
{
// myform.Hide();
}
或者,您可以保持原有的方式,将hide_Click事件中的sender对象强制转换为按钮,因为它是事件的源对象,其父对象是表单,您可以将其强制转换为表单,然后调用其隐藏方法
void hide_Click(object sender, EventArgs e)
{
((Form)((Button)sender).Parent).Hide();
}
您正在单击事件中创建myForm。变量具有方法级别的作用域。尝试将其声明为类作用域变量,并在单击事件中新建它
Form myform; //Notice that I have removed your declaration from your click event
//this variable now has visibility throughout the entire class.
private void button3_Click(object sender, EventArgs e)
{
myForm = new Form(); // I have instantiated it here
myform.Show();
myform.Text = "New Dynamic Window";
Button hide = new Button();
hide.Text = "Hide";
hide.Show();
hide.Location = new Point(50, 50);
hide.Click += hide_Click;
myform.Controls.Add(hide);
}
void hide_Click(object sender, EventArgs e)
{
// myform.Hide();
}
或者,您可以保持原有的方式,将hide_Click事件中的sender对象强制转换为按钮,因为它是事件的源对象,其父对象是表单,您可以将其强制转换为表单,然后调用其隐藏方法
void hide_Click(object sender, EventArgs e)
{
((Form)((Button)sender).Parent).Hide();
}
在事件处理程序中,您可以访问sender
参数。可以使用此参数访问父窗体。以下是示例代码:
void hide_Click(object sender, EventArgs e)
{
((sender as Button).Parent as Form).Hide();
}
在事件处理程序中,您可以访问sender
参数。可以使用此参数访问父窗体。以下是示例代码:
void hide_Click(object sender, EventArgs e)
{
((sender as Button).Parent as Form).Hide();
}
试试这个:
void hide_Click(object sender, EventArgs e)
{
((Control)sender).FindForm().Hide();
}
试试这个:
void hide_Click(object sender, EventArgs e)
{
((Control)sender).FindForm().Hide();
}
在“单击按钮”中无法访问您的表单。
您应该将表单声明为类成员。您的表单无法通过单击按钮访问。
您应该将您的表单声明为班级成员。您可以发布您的代码吗?代替图片。我写代码请检查…你必须在按钮外声明我的表单3\u单击事件你能发布你的代码吗?而不是图片。我写的代码请检查…你必须在button3\u点击事件外声明myForm