在表单中使用 class 中的方法

Use method from class in form

我的项目 Visibility.cs 中有 class,我想在 Form1 中使用名为 HospodaVisible() 的方法,但它不起作用。它没有显示用户控件。

这里是 class 和 form1 的代码:

public static class Visibility
{
    static Form1 f = new Form1();
    public static void HospodaVisible()
    {
        f.hospoda1.Visible = true;
        f.arena1.Visible = false;
        f.podzemi1.Visible = false;
    }
    public static void ArenaVisible()
    {
        f.hospoda1.Visible = false;
        f.arena1.Visible = true;
        f.podzemi1.Visible = false;
    }
    public static void PodzemiVisible()
    {
        f.hospoda1.Visible = false;
        f.arena1.Visible = false;
        f.podzemi1.Visible = true;
    }
}
    
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        hospoda1.Visible = false;
        arena1.Visible = false;
        podzemi1.Visible = false;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Visibility.HospodaVisible();
    }
}

看看这是否适合你:

    public static class Visibility
    {
        public static void HospodaVisible(Form1 f)
        {
            f.hospoda1.Visible = true;
            f.arena1.Visible = false;
            f.podzemi1.Visible = false;
        }
    }
    
    public partial class Form1 : Form
    {
        private void button1_Click(object sender, EventArgs e)
        {
            Visibility.HospodaVisible(this); // passes a reference to the "current" form, i.e. Form1 itself
        }
    }

this 是对 class 中 class 的当前实例的引用,换句话说,它是 self.

在上面的代码中,您将对活动的当前表单的引用传递给静态辅助方法,该方法接受对表单的引用(不实例化表单)并对它进行必要的更改。基本上,它说:“嘿帮手,用 this 表单做点什么”。