How do I change the style of a disabled control?

后端 未结 2 1353
野趣味
野趣味 2021-01-19 19:18

When a WinForm element is disabled, it sort of grays out. Is it possible to disable an element, but adjust the disabled style so it still looks enabled (not grayed out)?

相关标签:
2条回答
  • 2021-01-19 19:58

    The disabled style is part of standard Windows behavior. If you want to change the style, you'll have to draw the control yourself, meaning that you'll have to handle the Paint method, and possibly have to override OnPaint.

    See Overriding the OnPaint Method and Custom Control Painting and Rendering.

    0 讨论(0)
  • 2021-01-19 20:12

    Preventing a focusable control from taking the focus takes a number of counter-measures. You will have to include a control that does take the focus for this class to be resist all attempts:

    using System;
    using System.Windows.Forms;
    
    class RichLabel : RichTextBox {
        public RichLabel() {
            this.ReadOnly = true;
            this.TabStop = false;
            this.SetStyle(ControlStyles.Selectable, false);
        }
        protected override void OnEnter(EventArgs e) {
            if (!DesignMode) this.Parent.SelectNextControl(this, true, true, true, true);
            base.OnEnter(e);
        }
        protected override void WndProc(ref Message m) {
            if (m.Msg < 0x201 || m.Msg > 0x20e)
                base.WndProc(ref m);
        }
    }
    
    0 讨论(0)
提交回复
热议问题