dポイントプレゼントキャンペーン実施中!

質問番号:7352165で質問中の者です。

デリゲートとInvokeを使ったスレッドでは、スレッド実行中にイベントが発生しないので止む無く直接スレッドを起動しているのですが、この方法ではメインformのTextBoxなどに直接アクセスできません。

それでアクセスするメソッドをデリゲート+Invokeで呼んでおり、TextBoxの表示は正常に動作していますが、フォーカスをメインformに移動させる為にActivate();メソッドを記述すると「フィールド初期化子は静的でないフィールド、メソッド、または……を参照できません」の記述エラーとなります。

あまり理解できていないので基本的な使い方が間違っているかも知れませんが、何か解決策があればお教え下さい。

public void FormActive()  ← メインform(fmTax)に記述
{
  this.Activate();
}

private delegate void ActivDelegate(); ← 別スレッドに記述
ActivDelegate activDelegate = delegate()
{
  fmTax.FormActive(); ← ここにエラー表示
};

A 回答 (2件)

あー、あと「戻り値、引数なしのデリゲート」についてはMethodInvokerを調べると少しだけ幸せになれそうですね。

    • good
    • 0
この回答へのお礼

回答、有り難うございます。

ふぅーむ、私はまだまだ勉強不足ですね。

お教え頂いたことを調べて、もっと理解する様にします。

お礼日時:2012/03/10 18:18

質問のコードだと、fmTaxはあくまで「クラス」であって「フォームのオブジェクト」ではないはずです。


エラーメッセージはそれが理由です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!