Как мне go получить значение глобальных переменных в другой форме? - PullRequest
0 голосов
/ 29 мая 2020

Итак, я новичок в программировании, и я работаю в Visual Stud ios c# Windows application Forms, и у меня есть кнопка в первой форме, которая должна установить Glabel Bool в значение true при нажатии, а также открытие второй формы.

При запуске второй формы мне нужно, чтобы он знал, установлено ли для этого bool значение true или false, чтобы включить кнопку (во второй форме) или оставить ее отключенной (если False.

Вот код первой формы:

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;
        }
    }
}

Вот мой второй код формы:

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
    }
}

Надеюсь, это имеет смысл, если не дайте мне знать :) Спасибо !

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

Вы можете согласовать sh это, передав переменную конструктору второй формы. Предположим, вы хотите отправить значение 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;
}

EDIT: чтобы проверить, нужно ли активировать кнопку или нет:

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.
        }
    }
}

Во второй форме есть пара проблем:

  • Имя класса и имя конструктора не совпадают;
  • отсутствует параметр для конструктора Form2;
  • isManager должно быть присвоено значение IsManager, которое должно быть передано в качестве параметра конструктору.
0 голосов
/ 29 мая 2020

Прочитав ваш вопрос, я предполагаю, что вы пытаетесь установить значение для глобального bool IsManager и хотите выполнить какое-то действие в другой второй форме на основе этого значения.

Вы можете добиться это несколькими способами, один передает ваш глобальный bool в конструктор второй формы примерно так

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();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...