我正在尝试从另一个类更改Object的属性,如此。
abilities.cs(class)
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(object sender, EventArgs e) { abilities.hideAllButtons(); btnAbilities.Enabled = false; }
我已经在我的知识和理解中尝试了一切,并在互联网上查了很多。我已经尝试将对象设置为static,public,在类中创建对象。但没有任何作用。通常我会收到StackOverFlow错误。
我对OOP也很陌生,但我不是一个白痴,所以不要因为我的问题可能的解决或原因而过于轻率地对我这么做 - 如果你明白的话,那就是是
答案 0 :(得分:4)
方法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);
答案 1 :(得分:2)
这真的不行,因为你的控件在你的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(表单)上的作为私有方法,只需在按钮上单击即可使其更简单。
private void btnAbility1_Click(object sender, EventArgs e)
{
hideAllButtons();
btnAbilities.Enabled = false;
}
此致