2017-03-08 4 views
0

Form2に2つのグラフがあり、Form1のチェックボックス1にチェックを入れて、loadボタンを押します。たとえば、ユーザーがチェックボックス1と2を選択すると、2つのグラフが表示されます。ユーザーがチェックボックスをオンにすると、チャート1のみが表示されます。この例のコード例を参考にしてください。C#でForm2にアクセスし、Form2で何らかのアクションを行うためにC#でコードを作成する方法

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

答えて

0

@Tamas Szaboと@ Danish_k12が書いたように、2番目のフォームにパブリックプロパティを追加する必要があります。ロードボタンをクリックして、新しいフォーム2を初期化します。チェックボックスがオンになっていることを確認し、それに応じて2番目のフォームに追加するパブリックプロパティを設定します。次に、2番目のフォームのLoadイベントで、追加したパブリックプロパティの値に応じて、1番目または2番目のグラフを表示します。ここ は、あなたがこれを達成する方法である。

をForm1 - Form2のプライベートフィールドとして

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

もう一つ。両方のチェックボックスをチェックできるので、両方のグラフィックを一度に表示できる場合のみ、ケース内のチェックボックスを使用することは良いオプションです。 1つのグラフだけを表示する場合は、オプションセットの使用を検討してください。

ボタンをクリックするたびに新しいフォームを表示するには、表示されたフォームをプライベートフィールドに保存します。ボタンがクリックされたときにフィールドがnullでないかどうかを確認します。そうであれば、古いフォームを破棄して新しいフォームを作成します。あなたは、このような第二のフォームを表示するときにShowDialog代わりの表示の使用も検討すること

this.form2.ShowDialog(); 

これは、ダイアログウィンドウとユーザーが作成されますが最初のフォームのボタンに到達することができません2番目のフォームが開いている限り。

+0

ご協力いただきありがとうございます。 – SNP

+0

@ wnvko。あなたのコードは大変ありがとうございます。それは機能しますが、フォーム2は2回出現します。私には解決策を教えてください。ありがとうございます。 – SNP

+0

私は自分の答えを更新しました。これで1つのフォームのみが表示されます。ショーの代わりにShowDialogを使用して、フォーム – wnvko

0

あなたはブールとしてパブリック変数を宣言すると、チェックボックスの値ごとに値を変更することができます。

+0

ありがとうございます。私はこの言語の方が新しいです。 – SNP

+0

質問にコードを追加する必要があります。そこからあなたを導くでしょう。 –

+0

サンプルコードは以下のリンクをご覧くださいhttp://stackoverflow.com/questions/4416361/how-to-share-a-variable-between-2-form-global-variable-in-the-project –

0

私が考える最もクリーンな解決策は、パラメータとして2つのboolを取り、それらの値に基づいてグラフを表示するコンストラクタを作成することです。

+0

ありがとう私はこの言語の方が新しいです。あなたはそれにいくつかのコードを与えることができます。それは私にとって大きな助けです – SNP

+0

私はあなたのためのコードを書いたくありません。ここでコンストラクタを読む:https://msdn.microsoft.com/en-us/library/ms173115.aspx次に、2番目のフォーム用に作成します。 –

+0

私はお試しいただきありがとうございます。 – SNP

関連する問題