我有一个带有用户控件的主窗体,当按下用户控件上的面板时,将显示图像。我想在主窗体上创建一个按钮,当我按下它时,之前出现的图像再次隐藏(就像用户控件第一次初始化时一样)
我已经在用户控件中创建了一个类(这是项目的一部分),并且在其中创建了一个函数来隐藏图像(如果它们已经出现)。 以下代码没有显示错误,但是没有用。 你能帮我吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button_reset_Click(object sender, EventArgs e)
{
UserControl_axi user_ax = new UserControl_axi();
UserControl_axi.Rst_userControl.Rst_Axi(user_ax);
public class Rst_userControl
{
public static void Rst_Axi(UserControl_axi rst)
{
rst.pictureBox5.Hide();
rst.pictureBox6.Hide();
}
}
答案 0 :(得分:0)
起初,我觉得有些奇怪:为什么要在按钮操作中创建另一个用户控件?加载表单时,您可能不会看到该表单,因为该表单是在您的方法中创建的,然后在表单完成后将其删除。
您的表单中必须有另一个UserControl_axi
变量/实例,这是您必须在Rst_Axi
方法中用作参数的变量/实例
private void button_reset_Click(object sender, EventArgs e)
{
// New user control user_ax ???? -> To be removed
UserControl_axi user_ax = new UserControl_axi();
// Changes applied to an "invisible" user_ax -> Argument to be replaced with the property of your Form of type UserControl_axi
UserControl_axi.Rst_userControl.Rst_Axi(user_ax);
// After this user_ax will be destroyed
}
此外,如果您的Rst_userControl
类除了声明Rst_Axi
方法外没有其他用途,建议您删除它并直接将Rst_Axi()
声明为UserControl_axi
的方法。因为您的做法太过激了:)
public partial class UserControl_axi
{
// Not static anymore
public void Rst_Axi()
{
// No arguments because pictureBox5 and pictureBox6 are properties of the current usercontrol
this.pictureBox5.Hide();
this.pictureBox6.Hide();
}
}
然后致电
private void button_reset_Click(object sender, EventArgs e)
{
// Use the property in your form related to the UserControl_axi and call its reset method
this.userControl_axio1.Rst_Axi();
}