繁体   English   中英

我将如何 go 关于以另一种形式获取全局变量值?

[英]How would I go About Getting a Global Variables value in another form?

所以我是编程新手,我在 Visual Studios c# Windows 应用程序 Forms 上工作,我在第一个表单上有一个按钮,当按下第二个表单时,它也需要设置为 true。

在第二次 forms 启动时,我需要它来判断该布尔值是设置为真还是假,以启用按钮(在第二个表单上)或保持禁用(如果为 False。

这是第一个 Forms 代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Project
{
    public partial class FirstPage: Form
    {
        public FirstPage()
        {
            InitializeComponent();
        }

        public bool IsManager = false;

        public static class Global
        {
            public static bool IsManager = false;
        }

        private void Button_Btn_Click(object sender, EventArgs e)
        {
            this.hide();  
            Form2 f2 = new form2(IsManager);
            f2.ShowDialog();

            IsManager = true;
        }
    }
}

这是我的第二个 Forms 代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Project
{
    public partial class SecondPage : Form
    {
        public FirstPage()
        {
            InitializeComponent();
            IsManager = isManager;
        }
        private bool isManager;

        private void setButtonVisibility()
        {
            if(isManager == true)
            {
                MessageBox.Show("Button Message Display")
            }
        {


        //Need to check if the Global variable is true or false on page load to set a button to either enabled or disabled
    }
}

希望这是有道理的如果不让我知道:) 谢谢!

您可以通过将变量传递给第二种形式的构造函数来完成此操作。 假设您要将IsManager值发送到第二种形式。 在将值传递给构造函数时调用第二种形式:

Form2 f2 = new Form2(IsManager);

在第二种形式中,读取值:

public partial class Form2 : Form
{
    private bool IsManager;
    public Form2(bool isManager)
    {
        InitializeComponent();
        IsManager = isManager;
    }
    //Render button or whatever based on IsManager value;
}

编辑:检查按钮是否需要启用:

public partial class Form2 : Form
{
    private bool IsManager;
    public Form2(bool isManager)
    {
        InitializeComponent();
        IsManager = isManager;
        setButtonVisibility(); //call method setVisibility() -> this is what was missing in your code

    }
    private void setButtonVisibility()
    {
        if(IsManager == true)
        {
            MessageBox.Show("Button Message Display");
            //or YourButton.Enable = true; in order to enable it.
        }
    }
}

在您的第二种形式中,有几个问题:

  • Class 名称和构造函数名称不一样;
  • 缺少 Form2 构造函数的参数;
  • isManager 应该被分配 IsManager 的值,该值应该作为参数传递给构造函数。

好吧,在阅读了您的问题后,我假设您正在尝试为全局 bool IsManager 设置一个值,并希望根据该值以另一种形式执行一些操作。

您可以通过多种方式实现这一点,一种在第二种形式的构造函数中传递您的全局布尔值,如下所示

public partial class SecondPage: Form
{
    bool _isManager;
    public SecondPage(bool IsManager)
    {
        InitializeComponent();
       _isManager = IsManager; // the problem was isManager as mistakenkly i used small "i" 
    }
}

并从第一种形式传递值,例如

 private void Button_Btn_Click(object sender, EventArgs e)
 {
    this.hide();  
    IsManager = true;
    Form2 f2 = new form2(IsManager);
    f2.ShowDialog();
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM