2016-10-10 21 views
2

現在、私は複数のクラスを持っています。そのうちの1つは「変数クラス」と呼ばれています。 {get;set;}
他のクラスから取得した値です。空隙にこれらの値にアクセスすることは、単純です: 'ロード' でしかしWinformコントロールにクラス変数のプロパティを取得するにはどうすればよいですか?

Private void (Variables vb) 
{  
} 

Winformsの一部のクラス変数から

private void Form1_Load(object sender, EventArgs e) 
    { 
    } 

object sender, EventArgs e一部を占有している

public class Variables 
{ 
public int Node { get; set; } 
} 

私が議論をする空間。 winform上のVariablesクラスからNodeを得ることができる方法はありますか?

+0

フォームのコンストラクタに入れます。フォームの 'Load'イベントに変数を渡すことができます。 –

+2

winforms/C#に関するチュートリアルを行う必要があります。あなたはまったく新しいような音です –

+0

あなたは何をしようとしていますか? – Lodestone6

答えて

0

これがあなたが探しているものであれば100%確信はありませんが、私は助けることができると思います。

namespace Example 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
      } 
      //class which can be used anywhere in the namespace 
      public class exampleClass 
      { 
       public const string SETSTATE = "0"; 
       public const string GETSTATE = "1"; 
       public const string SETVALUE = "2"; 
       public const string GETVALUE = "3"; 
       public const string SENDFILE = "4"; 
       public const string STATE_RP = "129"; 
       public const string VALUE_RP = "131"; 
       public const string STATUS_RP = "128"; 
      } 
     } 
    } 

exampleClassとその囲まれたメンバーは、ここでForm1内の任意の場所で使用できます。フォーム内のどこにでも渡す必要はありません。

void exampleF() 
     { 
      //note that when you are accessing properties of UI elements from 
      //a non-UI thread, you must use a background worker or delegate 
      //to ensure you are doing so in a threadsafe way. thats a different problem though. 
      this.txtYourTextBox.txt = exampleClass.GETSTATE; 
     } 
0

実際にはWinFormsでMVP-Patternを使用しようとしているのかもしれません。非常に良いアイデア。 次に、DataBindingを使用して、Forms-Controlsを「変数クラス」プロパティにバインドできます。変数クラスはプレゼンターロール、フォームはビュー、モデルは変数クラスデータのソースです。

残念ながら、このパターンでは、処理しなければならない高度なメカニズムが使用されています。

詳細については、あなたはここで最初に見てかかることがあります:(それは通常、発生したいくつかのイベントの結果として呼び出されるので) Databinding in MVP winforms

2

あなたの方法Form1_Loadイベントハンドラです。 "Load"イベントはWinFormsで定義されているため、引数がobject senderEventArgs eであるという事実を変更することはできません。

WinFormsはフォームを表示する前に、Form1クラスのインスタンスを1つ作成します。フォーム上でイベントが発生するたびに、同じオブジェクト上のイベントハンドラが呼び出されます。

public class Form1 : Form 
{ 
    Variables _myVariables; 

    public Form1(Variables variables) 
    { 
     InitializeComponent(); 
     _myVariables = variables; 
    } 

    // ... 
} 


// Then, somewhere else: 

var variables = new Variables() { Node = 10 }; 
var myForm = new Form1(variables); 
myForm.Show(); 
// or: Application.Run(myForm); 
:あなたの Variablesオブジェクトはフォームの外に作成された場合

public class Form1 : Form 
{ 
    Variables _myVariables; 

    public Form1() 
    { 
     InitializeComponent(); 
     _myVariables = new Variables() { Node = 10 } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     MessageBox.Show("The current value of _myVariables.Node is: " + _myVariables.Node); 
    } 
} 

は、その後、あなたはForm1コンストラクタにそれを渡すことができます:

だから、あなたはあなたのForm1クラスのフィールドの値とプロパティを保存することができます

+0

それは今働いている!感謝のヒープ!!!! – ErnestY

関連する問題