C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ToolStripMenuItemにInvokeRequir


(過去ログ 82 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■48510 / inTopicNo.1)  ToolStripMenuItemにInvokeRequir
  
□投稿者/ のびた君 (1回)-(2010/04/08(Thu) 09:52:07)

分類:[.NET 全般] 

Formのコントロールを
Form以外のスレッドから変更しようとする際に
LabelやTextBoxならInvokeRequiredで私はいつもやってますが
ToolStripMenuItemにはInvokeRequiredプロパティがありません。

別スレッドからToolStripMenuItemのEnabled = true/falseを切り替えたいのですが
スレッドセーフに出来る良い方法はないでしょうか?

        delegate void SetLabelCallback(string str1, string str2);

        private void SetLabel(string str1, string str2)
        {

            if (label1.InvokeRequired ||
                label2.InvokeRequired)
            {
                SetLabelCallback d = new SetLabelCallback(SetLabel);
                this.Invoke(d, new object[] { str1, str2});
            }
            else
            {
                label1.Text = str1;
                label2.Text = str2;
            }
        }

引用返信 編集キー/
■48511 / inTopicNo.2)  Re[1]: ToolStripMenuItemにInvokeRequir
□投稿者/ のびた君 (2回)-(2010/04/08(Thu) 09:58:46)
ToolStrip toolStrip = toolStripMenuItem.GetCurrentParent();

toolStrip.InvokeRequired

でいけました。


解決済み
引用返信 編集キー/
■48512 / inTopicNo.3)  Re[1]: ToolStripMenuItemにInvokeRequir
□投稿者/ Hongliang (595回)-(2010/04/08(Thu) 10:00:34)
そのコントロールが作られたスレッドに属するなら別にどのコントロールを使っても構わないので、例えば Form 内のメソッドに書いてるなら this 使っても問題ないんですが。
ToolStripItem しか参照する物がないのなら、GetCurrentParent メソッドでその ToolStripItem が属する ToolItem を取得するのがいいでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -