Я не могу установить значение для публичной переменной - PullRequest
0 голосов
/ 25 марта 2019
  • У меня есть класс с именем Cls_Options.
  • Внутри этого класса у меня есть следующая переменная:

    public bool JoulVarQuestionMsgStatus;
    
  • У меня (A) форма содержит кнопку.

  • При нажатии на эту кнопку я устанавливаю значение для переменной JoulVarQuestionMsgStatus.

    private void btnOK_Click(object sender, EventArgs e)
    {
        Cls_Options.JoulVarQuestionMsgStatus = true;
        Close();
    }
    
  • Я показываю форму (A) через форму (B) и:

  • У меня есть оператор if, чтобы увидеть, каково значение JoulVarQuestionMsgStatus, если это было true, то делать что-то и если false делать что-то еще.

    MSGs.FrmMsgQuestion FrmMsgQuestion = new MSGs.FrmMsgQuestion();
    FrmMsgQuestion.lblMsg1.Text = Cls_Options.MsgSaveNew;
    FrmMsgQuestion.ShowDialog();
    
    if (Cls_Options.JoulVarQuestionMsgStatus== true)
    {
    
        int NewID = Cls_Countries.Joul_GetIDs();
        this.txt1.Text = NewID.ToString();
    
        this.txt2.Text = null;
        this.txt2.Select();
    }
    

моя проблема: когда я тестирую код, я вижу, что переменная в следующем коде сохраняет значение, которое я присвоил:

private void btnOK_Click(object sender, EventArgs e)
{

    Cls_Options.JoulVarQuestionMsgStatus = true;
    Close();
}

но когда я вижу значение переменной в операторе if, я вижу, что переменная не имеет значения, она сохраняет значение по умолчанию !!! Помогите мне, пожалуйста

Ответы [ 2 ]

1 голос
/ 25 марта 2019

1.Вы можете установить Cls_Options свойство класса, если оно является общедоступным статическим классом, что в вашем случае кажется, что это не так.

public static class Cls_Options
{
   public static bool JoulVarQuestionMsgStatus = false;
}

тогда вы можете установить его значениенапример:

Cls_Options.JoulVarQuestionMsgStatus  = true;

2. Если Cls_Options не является статическим, то это должен быть публичный класс, а затем вы можете установить свойства экземпляра класса, например:

Cls_Options cls_o = new Cls_Options();
cls_o.JoulVarQuestionMsgStatus = true;
0 голосов
/ 25 марта 2019

public bool JoulVarQuestionMsgStatus; определяет переменную экземпляр .Для каждого экземпляра класса Cls_Options существует отдельная копия этой переменной.

Вы пытаетесь использовать эту переменную в качестве статической переменной.В этом случае будет одна копия этой переменной (привязанная к классу, а не к экземпляру класса).

Чтобы исправить это, вы должны сделать одну из двух вещей:

  1. Сделать переменную статической: public static bool JoulVarQuestionMsgStatus;
  2. Когда вы вызываете ее, используйте экземпляр класса Cls_Options, который создается и хранится где-то.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...