1

ここで問題に直面しています。フォームをタブページに動的に追加しています。そのフォームから静的変数を取得する必要があります。

コードを使用しましたが、必要な正確な値を取得できません。

 private void timer2_Tick(object sender, EventArgs e)
    {
        foreach (TabPage page in tabControl1.TabPages)
        {
            Control control = page.Controls[0];
            if(!hyber.Form1.receiverflag)//bug line
            {
                tabControl1.TabPages.Remove(page);

            }
        }
    }

上の写真の時計ウィンドウで

page.controls [0]-> [hyber.form1]-> receiverflag

その変数値を取得する方法。

前もって感謝します。

4

1 に答える 1

1

あなたはバグラインについてはっきりしていないか、あなたが必要とする正確な値を得ることができないと言っています。

変数がaの場合、public static boolそれはインスタンスではなくクラスに属し、静的であるため、次のように記述します。

hyber.Form1.receiverflag

処理しているForm1の特定のインスタンスに関係なく、変数の値を取得します。インスタンスを1つ作成してTabPageに追加したかどうかはまったく関係ありません。インスタンスを作成しなくても、その変数は常に存在します。

間違った/予期しない結果が発生した場合、最終的には、別のスレッドまたは別のメソッドがその静的フィールドの値を変更した可能性があり、これはアプリケーションのあらゆる場所に反映されます。

編集:静的でない場合は、おそらくこの方法であなたが求めているものを得ることができます:

var yourForm1 = (page.Controls[0] as hyber.Form1);

if( yourForm1 != null && !yourForm1.receiverflag)
{
  ....
于 2011-09-17T13:26:30.007 に答える