3

アクションを実行する ToolStripButton があります。ユーザーがボタンをクリックすると、アクションが 2 回実行されるのを防ぐためにボタンが無効になります。アクションが完了すると、ボタンは再び有効になります。それはすべて完全に機能します...例外:

ボタンが無効になっているため、「MouseLeave」イベントは発生せず、その結果、ボタンの外観は更新されません。完全に明確にするために、マウスが ToolStripButton に入ると、ボタンがオレンジ色 (デフォルト) で強調表示され、その周りに黒いボックスが表示されます。ボタンを再度有効にしても、このハイライトは削除されません。この時点で、マウス カーソルはコントロールから消えて久しいです。ボタンの上にマウスを移動すると、ボタンが再描画されて自然に修正されます。

私がやりたいのは、その外観を「リセット」する ToolStripButton のメソッドです。このようなメソッドは ToolStrip にも存在する可能性がありますが、検索してもこのようなものは見つかりませんでした。

別の方法として、ボタンで「Mouse Leave」イベントを直接発生させることもできます。私の知る限り、C# .NET でこれを簡単に行う方法はありません。

この時点でのアドバイスは非常に高く評価されます。当然、アプリケーションを破棄してツールストリップを交換したくありません。

4

3 に答える 3

1

更新: 私はあなたの問題を再現し、理解しようとしました!

クリックイベントでスタイルをリセットする以外に良い方法はありませんでした

    private void toolStripButton1_Click(object sender, EventArgs e)
    {
        toolStripButton1.BackColor = Color.FromKnownColor(KnownColor.Control);
        toolStripButton1.Enabled = false;
    }

    private void toolStripButton1_MouseEnter(object sender, EventArgs e)
    {
        toolStripButton1.BackColor = Color.Red;
    }

    private void toolStripButton1_MouseLeave(object sender, EventArgs e)
    {
        toolStripButton1.BackColor = Color.FromKnownColor(KnownColor.Control);
    }

お役に立てれば!


Control.Invalidate() を試しましたか?

MSDN から: コントロールの表面全体を無効にし、コントロールを再描画します。

于 2011-07-20T23:53:59.950 に答える
0

私も同じ問題を抱えていました。タスクが完了した後、Visibleプロパティを使用して ToolStripButton を非表示にしてから表示することで、「修正」しました。

于 2015-11-13T20:40:54.637 に答える