tôi sẽ thêm điều này ở đây mặc dù câu hỏi là một chút cũ - tôi đã làm nó khác với những người khác bằng cách ghi đè phương pháp Paint
trên điều khiển để vẽ một hộp trong suốt. Tôi đã sử dụng một lớp được kế thừa từ cơ sở DataGridView
và sau đó cung cấp một số thuộc tính bổ sung và ghi đè cho phương thức OnPaint
. Bạn cũng có thể làm điều này trong sự kiện Paint
, nhưng đối với tôi, tôi đã có phiên bản kiểm soát riêng của mình.
Điều này có lợi ích là không thay đổi bất kỳ màu/định dạng hàng/ô nào bạn đã thiết lập và chỉ muốn làm mờ điều khiển khi bị tắt.
Chỉ cần đặt DisableColor
(thành Đen chẳng hạn) để làm cho nó mờ đi (bạn cũng có thể thay đổi kênh alpha bằng thuộc tính DisableColorAlpha
). Nếu không nó hoạt động như mọi khi.
/// <summary>
/// Color used when the grid is disabled
/// </summary>
[Category("Appearance"), DefaultValue(typeof(Color), "Transparent"), Description("Color to use when the control is disabled (should be transparent)")]
public Color DisableColor { get; set; }
/// <summary>
/// Color used when the grid is disabled
/// </summary>
[Category("Appearance"), DefaultValue(50), Description("Alpha channel value for disabled color (0-255)")]
public int DisableColorAlpha { get; set; }
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.Enabled == false && DisableColor != Color.Transparent)
{
// paint a transparent box -- simulate disable
using (Brush b = new SolidBrush(Color.FromArgb(DisableColorAlpha, DisableColor)))
{
e.Graphics.FillRectangle(b, e.ClipRectangle);
}
}
}
Vui lòng tôn trọng màu hệ thống và sử dụng 'SystemColors.Control' không phải là màu xám cứng! – MarkJ
mọi người chấp nhận màu xám nhạt khi bị tắt. đó là phổ quát. – Timmerz