2015-12-01 2 views
0

Я пытался изменить значение целого на вторую форму. У меня две формы. Первая - моя основная форма. Он содержит целое число, которое я пытаюсь изменить. Вторая форма - это моя форма выбора. Мне нужно изменить значение integer в первой форме, используя числовое updown на моей второй форме. Проблема в том, что каждый раз, когда я открываю вторую форму, она сбрасывает первую форму.C# Как изменить значение int в другой форме (форма окна)

Вот как открыть вторую форму на первой форме:

private void optionsToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    // I need to access the second form 
    frmOptions frmOptionsJeux = new frmOptions(); 
    frmOptionsJeux.Show(); 
} 

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

namespace TP3 
{ 
    public partial class frmOptions : Form 
    { 
     // I need to access the first form 
     frmPrincipal frmJeu = new frmPrincipal(); 


     public frmOptions() 
     { 

      InitializeComponent(); 

      // Sets the value of the Numeric UpDowns (boiteNbLignes & boiteNbColonnes 

      // nbLignesDansTableauDeJeu & nbColonnesDansTableauDeJeu are the two integers I need to modify. 

      boiteNbLignes.Value = frmJeu.nbLignesDansTableauDeJeu; 
      boiteNbColonnes.Value = frmJeu.nbColonnesDansTableauDeJeu; 

     } 

     //The integers are only modified when I click OK 
     private void btnOK_Click(object sender, EventArgs e) 
     { 
      AppliquerOptionsTaille(); 
      this.Hide();    
     } 

     private void btnCancel_Click(object sender, EventArgs e) 
     { 
      this.Hide(); 
     } 

     // How the integers are supposed to be modified 
     public void AppliquerOptionsTaille() 
     { 
      frmJeu.nbLignesDansTableauDeJeu = (int)boiteNbLignes.Value; 
      frmJeu.nbColonnesDansTableauDeJeu = (int)boiteNbColonnes.Value;     
     } 
    } 
} 

Я не знаю, что я делаю неправильно. Я пробовал как минимум 4 часа. Это для школьного проекта. Извините за французские слова в коде! (Французская школа)

+1

'frmPrincipal frmJeu = new frmPrincipal(); 'создает первую форму * new *. Изменение чего-либо на 'frmJeu' меняет свойство на этой новой, но скрытой форме. Создайте конструктор 'frmOptions'' frmPrincipal'. Затем назовите его следующим образом: 'frmOptions frmOptionsJeux = new frmOptions (this);' – Rob

+0

Спасибо! , У меня все еще есть проблема. Вызов AppliquerOptionsTaille невозможно. Вот что я сделал: public void AppliquerOptionsTaille (frmPrincipal frmJeu) – Mthb54

+0

Но я не могу поместить ничего между() при вызове – Mthb54

ответ

2

При создании второй формы прохода референс к вашему первому:

frmOptions frmOptionsJeux = new frmOptions(this); 
    frmOptionsJeux.Show(); 

И тогда в вашей второй форме конструктор установить его в частной переменной:

private Form1 parent 
public frmOptions(Form1 formRef) 
     { 

      InitializeComponent(); 

      // Sets the value of the Numeric UpDowns (boiteNbLignes & boiteNbColonnes 

      // nbLignesDansTableauDeJeu & nbColonnesDansTableauDeJeu are the two integers I need to modify. 

      boiteNbLignes.Value = frmJeu.nbLignesDansTableauDeJeu; 
      boiteNbColonnes.Value = frmJeu.nbColonnesDansTableauDeJeu; 
      parent = formRef; 

     } 
+0

Спасибо за ответ! Вы знаете, почему мы должны установить Form1 в личное? – Mthb54

+1

@ Mthb54 У вас нет *** есть *** для. Чтение модификаторов доступа – Rob

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