2011-11-21 20 views
16

Tôi có một nút trên biểu mẫu Windows Forms mà tôi thay đổi màu nền thành Color.Yellow khi được nhấp. Khi nó được nhấp một lần nữa, tôi muốn khôi phục nó về mặc định ban đầu.Khôi phục C# Windows Forms backcolor

Màu nền mặc định là SystemColor.Control.

Khi nút được nhấp lần đầu tiên điều duy nhất tôi thay đổi là

btn.Text = "ABC"; 
btn.BackColor = Color.Yellow; 

Khi được nhấp một lần nữa tôi làm

btn.BackColor = SystemColors.Control 

Nền mới không có bóng giống như nó ban đầu đã làm trước bất kỳ lần nhấp nào. Các nút ban đầu có một nền không phải là một màu rắn, nhưng là hai sắc thái hơi khác nhau của màu xám. Màu cuối cùng kết thúc là một màu xám đậm.

Tôi đang thử nghiệm tính năng này trên máy tính Windows 7.

Ảnh chụp màn hình:

Enter image description here

+1

Bạn có thể gửi ảnh chụp màn hình? Ngoài ra, bạn đang chạy phiên bản hệ điều hành nào? –

+4

Bạn càng nỗ lực đặt câu hỏi của mình, câu trả lời hay hơn bạn sẽ nhận được bao gồm ảnh chụp màn hình của sự cố. – Nasreddine

+0

Liên quan: * [Cách đặt lại về nút mặc định BackColor?] (Http://stackoverflow.com/questions/10569200) * –

Trả lời

22

Hãy thử điều này:

if (button1.BackColor == Color.Yellow) 
{ 
    button1.BackColor = SystemColors.Control; 
    button1.UseVisualStyleBackColor = true; 
} 
else 
{ 
    button1.BackColor = Color.Yellow; 
} 
+0

Bingo, mà làm việc nhờ – JonF

+0

+1 Tốt bắt tôi đã không nhận thức được rằng phương pháp –

1

Hãy thử sử dụng btn.ResetBackColor() thay vì tự thiết lập các BackColor.

+1

Chức năng đó không tồn tại trong nút winform (ít nhất là trong biểu tượng 3.5 net) – JonF

+1

Nó thực sự tồn tại, nó không hiển thị trong intellisense bởi vì nó được đánh dấu là [EditorBrowsable (EditorBrowsableState.Never)] –

+1

@JonF Theo [MSDN] (http://msdn.microsoft.com/en-us/library /system.windows.forms.control.resetbackcolor.aspx) nó tồn tại, vì .Net 1.0 – Nasreddine

11

Bạn cũng nên đặt UseVisualStyleBackColor thành true. Thuộc tính này được đặt thành false khi bạn thay đổi màu nền.

+2

+1 Đây chính xác là những gì bạn cần để giải quyết vấn đề của mình. –

1

này sẽ khôi phục lại giao diện mặc định (thử nghiệm trên Windows 7, .net 3.5):

btn.BackColor = System.Drawing.Color.Transparent;