【问题标题】:How can I get a Boolean from form 2 to form1?如何从表格 2 到表格 1 获得布尔值?
【发布时间】:2019-05-24 08:22:13
【问题描述】:

如何从 Form2 中的 class2 到 form1 中的 class1 获取布尔值?

我尝试调用变量,但没有成功。或者我做错了什么

Form3UpgradesGunSounds:

    // If you double click, it will select the sounds
    private void Form3UpgradesGunSounds_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        if (e.X > 36 && e.X < 336 && e.Y > 35 && e.Y < 93) // FireTankCannon100
        {
            _tankCannon100 = true;
        }
        else if (e.X > 336 && e.X < 670 && e.Y > 35 && e.Y < 93) // FireTankCannon120
        {
            _tankCannon120 = true;
        }
        this.Close();
    }
    public bool GetTankCannon100()
    {
        return _tankCannon100;
    }
    public bool GetTankCannon120()
    {
        return _tankCannon120;
    }

Form1Game

    public void MoleShooter_MouseClick(object sender, MouseEventArgs e)
    {
        // ...  
        Form3UpgradesGunSounds fr3UpgradesSounds = new Form3UpgradesGunSounds();
        bool _f1tankCannon100 = fr3UpgradesSounds.GetTankCannon100();
        bool _f1tankCannon120 = fr3UpgradesSounds.GetTankCannon120();

        if (_f1tankCannon100 == false)
        {
            F1TankCannon100();
        }
        else if (_f1tankCannon120 == true)
        {
            F1TankCannon120();
        }
        // ... 
    }

    public void F1TankCannon100() { /*. Do something .*/ }

    public void F1TankCannon120() { /*. Do something .*/ }

我的问题是 如何从Form1Game 表单中创建和访问Form3UpgradesGunSounds 中的属性

【问题讨论】:

标签: c# winforms


【解决方案1】:

1- 像这样在Form2 中创建一个新属性

  public partial class Form2: Form
    {
        public static bool BolleanProperty { get; set; }
        // ...
    }

2-在static constructor设置属性BolleanProperty = true

public partial class Form2: Form
{
    public static bool BolleanProperty { get; set; }
    static Form2()
    {
        BolleanProperty = true;

    }
    public Form2()
    {
        InitializeComponent();
    }
}

3- 现在在Form1,您可以访问Form2中的属性

 private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = Form2.BolleanProperty.ToString();
        }

更新了我对新贡献者Luuk Scherjon的回答

要在您的情况下执行此操作,您可以按照以下步骤操作

  1. Form3UpgradesGunSounds 中创建两个public properties

    public bool TankCannon100 { get; set; }
    public bool TankCannon120 { get; set; }
    
  2. Form3UpgradesGunSounds_MouseDoubleClick事件中

    _tankCannon100 & _tankCannon120 替换为已创建的属性

    if (...) // FireTankCannon100
      TankCannon100 = true;
    else if (...) // FireTankCannon120
      TankCannon120 = true;
    
  3. 现在在Form1Game > MoleShooter_MouseClick 您可以访问在Form3UpgradesGunSounds 中创建的属性

    public void MoleShooter_MouseClick(object sender, MouseEventArgs e)
        {
            // ...  
            Form3UpgradesGunSounds fr3UpgradesSounds = new Form3UpgradesGunSounds();
    
            if (!fr3UpgradesSounds.TankCannon100)
            {
                // do something 
            }
            if (fr3UpgradesSounds.TankCannon120)
            {
                // do something 
            }
    
            // ... 
        }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2013-11-16
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多