2015-04-14 2 views
1

У меня есть ToolStripButton в моей основной форме и прикрепленном к нему событии клика, при щелчке он откроет диалоговое окно и задает состояние CheckStripButton как «true». В событии FormClosing формы, которая открывается из вышеприведенного щелчка, пытается установить те же проверенные состояния toolStripButton как «false». Но государство всегда остается «истинным».Установить значение свойства из события FormClosing

toolStripButton1_Click(object sender, EventArgs e) 
{ 
if (!toolStripButton1.Checked) 
     { 
      toolStripButton1.Checked = true; 
      RevisionTools revTools = new RevisionTools(); 
      revTools.ShowDialog(); 
     } 
} 

Создано свойство, как показано ниже:

public bool revEditState 
    { 
     get{return this.toolStripButton1.Checked;} 
     set{this.toolStripButton1.Checked = value;} 
    } 

и диалог, который получает открыт по щелчку:

public partial class RevisionTools : Form 
{ 
    public RevisionTools() 
    { 
     InitializeComponent(); 
    } 
    private void RevisionTools_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     MainForm mainForm = new MainForm(); 
     mainForm.revEditState = false; 
    } 
} 

Является ли это правильный способ установки значения свойства? Это приложение WinForms.

+0

Вы устанавливаете для свойства new object (mainForm) значение false. не оригинальные – Orifjon

ответ

3

Вы устанавливаете его на новый экземпляр MainForm. Вам нужно будет передать экземпляр MainForm при открытии диалога, или вы можете сделать это в самой MainForm после ShowDialog.

В вашем примере выполнение этого на ShowDialog было бы лучшим подходом.

RevisionTools revTools = new RevisionTools(); 
revTools.ShowDialog(); 
this.revEditState = false; 

Примечание: Вы также можете поймать результат диалога как DialogResult, чтобы условно установить это значение. то есть, если пользователь нажал кнопку «ОК» или «Отмена» в диалоговом окне.

0

Он остается правдой, потому что в вашем событии FormClosing ваш параметр revEditState присваивается false в совершенно новом экземпляре на mainForm. Вы можете передать переменную во вторичную форму в качестве ссылки или назначить событие FormClosing в своей основной форме;

revTools.FormClosing += new FormClosingEventHandler(RevisionTools_FormClosing); 

Вам нужно будет переместить «RevisionTools_FormClosing» в вашу основную форму.

Смежные вопросы