0

私はC#プログラミングに非常に慣れていません。あるクラスにスタートボタンがあり、別のクラスにTextBoxを使用して[開始]ラベルと[停止]ラベルを転送します。同様に、両方ともデザインの異なるタブにあります。同じタブとクラスで開始時刻と終了時刻を表示できますが、別のクラスでは表示できません。以下のようなシンプルなデザインを添付しました。![サンプル] [1]

[プロジェクト]タブの[開始]ボタンをクリックすると、テキストボックスに「転送開始」というラベルの付いた開始時刻が表示されます。停止ボタンも同じです。開始時刻と停止時刻を表示したい。[プロジェクト]タブには、追加する他の機能がいくつかありますが、ここには表示されていません。

4

2 に答える 2

1

クロススレッドの問題などを回避するために、デリゲートを使用して値を2番目のタブ/クラスに渡すことができます...次のようなものです:

MyClass.NotifyParentUI += new EventHandler<MyArgs>(UpdateMyLabel);

 public void UpdateMyLabel(object sender, MyArgs ea)
    {
        this.Invoke(new MethodInvoker(
            delegate()
            {
                myLabel.Text = ea.Message;
            }));
    }


public class MyArgs : EventArgs
{
    public string Message { get; set; }
}

そして、使用からデータを渡したいクラスで:

public MyClass
{
     public static event EventHandler<MyArgs> NotifyParentUI;

     protected virtual void OnMyEvent(MyArgs ea)
     {
         if (NotifyParentUI != null)
         {
             NotifyParentUI(this, ea);
         }
     }
}

使用:

  OnMyEvent(new MyArgs() { Message = "Transfer start/stop values go here" });

値を渡すには

于 2013-02-08T10:16:04.053 に答える
0

さまざまな方法を使用してフォーム間でデータを渡すことができますフォーム間でデータを渡します

  1. コンストラクター経由
  2. グローバルプロパティ経由
  3. イベント経由

フォームが両方のタブで同じである場合は、コントロール自体を使用できます。それの何が問題なのですか?

public Class form2 {
public form2(string somevalues)
{
 //use this values. in form2 
}
}

public class form1 {
form2 objfrm = new form2("your value");
}
于 2013-02-08T10:09:34.727 に答える