在另一个类中更改对象的属性

本文关键字:对象 属性 另一个 | 更新日期: 2023-09-27 18:17:41

我正在尝试从另一个类更改对象的属性,如:

abilities.cs(类)

        public static void hideAllButtons()
        {
            frmFight fight = new frmFight();
            fight.btnAbility1.Visible = false;
            fight.btnAbility2.Visible = false;
            fight.btnAbility3.Visible = false;
            fight.btnAbility4.Visible = false;
            fight.btnAbility5.Visible = false;
            fight.btnAbility6.Visible = false;
            vars.buttonsVisible = false;
        }

我试图使用从上一个类的方法来改变对象的属性在以下形式;

frmFight.cs(形式)

<>之前private void btnAbility1_Click(对象发送者,EventArgs e){abilities.hideAllButtons ();btnAbilities。Enabled = false;}之前

我已经尝试了所有我的知识和理解,并在互联网上查找了很多。我试过使对象静态,公共,在类中创建对象。但什么都没用。通常我得到StackOverFlow错误。

我对OOP也很陌生,但我不是白痴,所以不要认为对我太"轻率"地解决我的问题,或者导致我的问题-如果你理解,那就是。

在另一个类中更改对象的属性

方法hideAllButtons是静态的,所以应该有一个Form参数。

 public static void hideAllButtons(frmFight fight)
 {
  fight.btnAbility1.Visible = false;
  fight.btnAbility2.Visible = false;
  fight.btnAbility3.Visible = false;
  fight.btnAbility4.Visible = false;
  fight.btnAbility5.Visible = false;
  fight.btnAbility6.Visible = false;
  //vars.buttonsVisible = false; // What about this???
 }
并在点击处理程序中调用这个方法,
hideAllButtons(this);

这真的不起作用,因为你的控件是在你的frmFight。

你需要做的是放置

 private void hideAllButtons()
    {
        btnAbility1.Visible = false;
        btnAbility2.Visible = false;
        btnAbility3.Visible = false;
        btnAbility4.Visible = false;
        btnAbility5.Visible = false;
        btnAbility6.Visible = false;
        vars.buttonsVisible = false;
    }

在你的frmFight.cs (form)作为私有方法,只是调用你的按钮点击,使它更简单。

    private void btnAbility1_Click(object sender, EventArgs e)
    {
        hideAllButtons();
        btnAbilities.Enabled = false;
    }