1

ユーザーがフォームを「ロック」できるボタンがあります。ユーザーはフォームを「ロック解除」することを許可されていないため、ボタンを押したときにボタンを無効にして、ユーザーが適切な視覚的フィードバックを受け取るようにします。

しかし、灰色の「ロック」アイコンはフォームがロックされていないことを示唆していると顧客から報告されているため、ボタンが無効になっている場合でも、ボタンを押した状態でアイコンを色付きで表示したいと考えています。

オーバーライドされたペイントの絶対最小量で、どうすればそれを行うことができるでしょうか?

4

4 に答える 4

1

You can set the ToolStripButton Image as BackgroundImage
and then set the DiplayStyle to None.

The picture should stay in colour no matter what's the button Enabled value.

于 2009-02-10T10:19:34.787 に答える
1

実際、私はそのアプローチに同意しません。あなたの顧客は正当な意見を持っているかもしれませんが、修正のための正しい提案を持っているとは思いません. フォームが「ロックされている」ように見せるには、他の方法を検討する必要があります。境界線やフォントの色を変更したり、大きな南京錠のアイコンを表示したり、開いた状態から閉じた状態に変更したりします。ユーザーが期待しているため、ボタンは特定の方法で表示されます。無効になっているボタンが有効になっているように見える場合、クリックできない理由を理解できないユーザーを混乱させる可能性があります。

于 2009-02-10T10:23:29.583 に答える
1

私はこの場合数週間前にいましたが、この質問には答えがないので、これが4年後の私の解決策です:

多くの場合、このソリューションを使用して ToolStripButton を再描画しています:無効、チェック済み、選択済み

  1. OnPaint イベントをオーバーライドするか、ToolStrip のレンダラーを変更します
  2. この方法で灰色のフィルターを使用せずに画像を描画します。ボタンの画像とボタンの画像の位置を設定するだけです: http://msdn.microsoft.com/en-us/library/chas0s9c(v=vs.110).aspx

私を助けた2つの良い例:

ツールストリップ クラス:

ToolStrip ts = new ToolStrip();
//[...]
ts.RenderMode = ToolStripRenderMode.Professional; //Professional is just an example
ts.Renderer = new CustomRenderer();

CustomRenderer クラス:

public class CustomRenderer: ToolStripProfessionalRenderer
{
    protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
    {
        if (!e.Item.Enabled) //in this case you will just have the image in your button, you need to add text etc in this if
        {
             //to draw the image
             Graphics g = e.Graphics;
             g.DrawImageUnscaled(e.Item.Image, new Point(2, 2)); //you need to specify the correct position
        }
        else //other cases
            base.OnRenderButtonBackground(e);
     }
}

問題は、 ToolStripButton 内のすべての要素の正しい位置を知ることです。そのため、すべての場合に ToolStripButton を描画しました

于 2014-01-09T10:25:23.513 に答える
0

別の方法: をまったく設定しないでくださいbutton.Enabled = falsebutton.Checked = trueまたはと を設定するだけfalseで、誰かがボタンをクリックしたときにChecked状態をテストし、何をしてもかまいません。ボタンは必要に応じて機能し、色も維持されます。

于 2009-02-10T10:23:57.350 に答える