簡體   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