代码之家  ›  专栏  ›  技术社区  ›  Shaun Hamman

是否可以在Visual Studio 2008中将命令按钮设置为具有禁用3D的图形?

  •  0
  • Shaun Hamman  · 技术社区  · 17 年前

    我最近在Visual Studio 2008中启动了一个WinForms项目,我注意到当我禁用命令按钮时,它会使按钮变平并使文本保持黑色。这与我在vb6和vs2005中的体验相比是一个意想不到的变化,在那里按钮只是变灰了。

    是否有允许我将命令按钮3d的禁用状态设置为启用状态的设置?我将FlatStyle设置为Standard,尽管系统会导致相同的行为。我还注意到useVisualStyleBackColor需要设置为true,按钮才能在启用状态下正确显示。

    非常感谢您的帮助。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Hans Passant    17 年前

    按钮的绘制代码在内部类中被严格锁定,您不能重写它,也不能重复使用它。公共ButtonRenderer类不处理禁用的按钮。

    有一件事可以奏效,那就是玩具有backgroundimage属性的游戏。向项目中添加新类并粘贴下面显示的代码。将新控件从工具栏顶部放到窗体上。

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyButton : Button {
      protected override void OnSizeChanged(EventArgs e) {
        base.OnSizeChanged(e);
        Bitmap bmp = new Bitmap(this.Width, this.Height);
        using (Graphics gr = Graphics.FromImage(bmp)) {
          ButtonRenderer.DrawButton(gr,
            new Rectangle(0, 0, bmp.Width, bmp.Height),
            System.Windows.Forms.VisualStyles.PushButtonState.Normal);
        }
        if (this.BackgroundImage != null) this.BackgroundImage.Dispose();
        this.BackgroundImage = bmp;
      }
    }