2017-03-08 1 views
0

Es gibt zwei Grafik in Form2 und Benutzereingabe das Häkchen auf Kontrollkästchen 1 in Form1 und drücken Sie die Schaltfläche load.Nach dem Programm anzeigen, um Diagramm1 zu aktivieren oder chart2.Wenn ein Benutzer das Kontrollkästchen 1 und 2 aktiviert und dann zwei Graphen anzeigt. Wenn der Benutzer das Kontrollkästchen 1 aktiviert, dann zeigt er nur chart1 an. Bitte helfen Sie mir durch ein Coding-Beispiel dafür. Ich habe meine Schnittstelle damit verbunden.Wie in C# für den Zugriff auf Form 1 checkedBox von Form2 und machen Sie eine Aktion in Form2

This is a checkbox and load button There is a 2 graph

Antwort

0

Wie @Tamas Szabo und @ Danish_k12 Sie geschrieben haben, müssen Sie eine öffentliche Eigenschaft in Ihrer zweiten Form hinzufügen. Klicken Sie auf Laden klicken Sie auf neues Formular2 initialisieren. Aktivieren Sie dann, welches Kontrollkästchen aktiviert ist, und legen Sie die öffentliche Eigenschaft fest, die Sie dem zweiten Formular hinzufügen. Dann im Load-Ereignis des zweiten Formulars, abhängig vom Wert der öffentlichen Eigenschaft, die Sie hinzugefügt haben, zeigen Sie das erste oder zweite Diagramm an. Hier ist, wie Sie dies erreichen können:

Form1 - mit Form2 als privates Feld

namespace WindowsFormsApplication3 
{ 
    using System; 
    using System.Windows.Forms; 

    public partial class Form1 : Form 
    { 
     private Form2 form2; 

     public Form1() 
     { 
      this.InitializeComponent(); 
      this.button_Load.Click += Button_Load_Click; 
     } 

     private void Button_Load_Click(object sender, EventArgs e) 
     { 
      if(this.form2 != null) 
       this.form2.Dispose(); 

      this.form2 = new Form2(); 
      if(this.checkBox1.Checked == true) 
      { 
       this.form2.IndexOfGraphToShow = 1; 
      } 

      if(this.checkBox2.Checked == true) 
      { 
       this.form2.IndexOfGraphToShow = 2; 
      } 

      if(this.form2.IndexOfGraphToShow == 1 || this.form2.IndexOfGraphToShow == 2) 
      { 
       this.form2.Show(); 
       return; 
      } 

      MessageBox.Show("Select which graph to show", "Choose graph", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      form2.Dispose(); 
     } 
    } 
} 

Form2:

namespace WindowsFormsApplication3 
{ 
    using System; 
    using System.Windows.Forms; 

    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      this.InitializeComponent(); 
      this.Load += Form2_Load; 
     } 

     public int IndexOfGraphToShow { get; set; } 

     private void Form2_Load(object sender, EventArgs e) 
     { 
      if(this.IndexOfGraphToShow == 1) 
      { 
       // TODO: Show first graph 
      } 
      else if(this.IndexOfGraphToShow == 2) 
      { 
       // TODO: Show second graph 
      } 
     } 
    } 
} 

Eine weitere Sache. Die Verwendung von Kontrollkästchen in Ihrem Fall ist nur dann sinnvoll, wenn Sie beide Grafiken gleichzeitig anzeigen können, da beide Kontrollkästchen aktiviert sein können. Wenn Sie nur eine Grafik anzeigen möchten, sollten Sie die Option set verwenden.

Um zu zeigen, wann jedes Mal auf ein neues Formular geklickt wurde, können Sie das angezeigte Formular in einem privaten Feld speichern. Überprüfen Sie, ob das Feld beim Klicken auf die Schaltfläche nicht null ist. Wenn ja, entsorgen Sie das alte Formular und erstellen Sie ein neues Formular.

können Sie auch prüfen, anstelle von Show von Showdialog verwenden, wenn Sie die zweite Form wie folgt zeigen:

this.form2.ShowDialog(); 

Dies wird ein Dialogfenster erstellen und Benutzer nicht in der Lage sein, den Knopf der ersten Form zu erreichen solange die zweite Form offen ist.

+0

Vielen Dank für Ihre Hilfe und ich werde es versuchen. – SNP

+0

@ wnvko.Thank Sie für Ihren Code ist sehr viel.Es funktioniert.aber Form 2 erscheint zweimal.Wenn Sie können mir bitte eine Lösung für das.Wir danken Ihnen sehr. – SNP

+0

Ich habe meine Antwort aktualisiert. Es wird jetzt nur eine Form angezeigt. Betrachten Sie auch ShowDialog anstelle von Show, um das Formular – wnvko

0

Sie können eine öffentliche Variable als Boolean deklarieren und den Wert gemäß dem Wert Kontrollkästchen ändern.

+0

Vielen Dank.Ich bin neuer zu dieser Sprache. Bitte geben Sie einen Code für das.Es ist eine große Hilfe für mich. – SNP

+0

Sie sollten Ihren Code in der Frage hinzufügen. Wird dich von dort führen. –

+0

Sie können den folgenden Link für Beispielcode http://stackoverflow.com/questions/4416361/how-to-share-a-variable-between-2-form-global-variable-in-the-project –

0

Die sauberste Lösung, die ich denke, wäre, einen Konstruktor zu erstellen, der zwei bool s als Parameter nimmt und die Graphen basierend auf diesen Werten zeigt.

+0

Vielen Dank .Ich bin neuer in dieser Sprache.Können Sie einen Code dafür geben.Es ist eine große Hilfe für mich – SNP

+0

Ich möchte nicht Ihren Code für Sie schreiben. Lesen Sie Konstruktoren hier: https://msdn.microsoft.com/en-us/library/ms173115.aspx dann erstellen Sie eine für Ihr zweites Formular. –

+0

danke ich werde es versuchen. – SNP

Verwandte Themen