2009-04-17 9 views
13

Hành vi mặc định của thuộc tính BackColor của số TextBox như sau: khi được bật, nó là White (SystemColors.Window), khi tắt nó là Xám (không chắc chắn về SystemColor này là gì).Làm cách nào để đặt lại một thuộc tính .NET Windows TextBox BackColor?

Nếu tôi thay đổi thuộc tính BackColor, cùng một màu được sử dụng cho cả Bật và Tắt. Làm cách nào để đặt lại thuộc tính BackColor (sau khi đã được thay đổi trước đó) để hành vi đó trở về mặc định?

Tôi đã thử đặt lại thành SystemColors.Window, nhưng sau đó hộp vẫn trắng khi tắt.

Trả lời

27

Nếu bạn muốn nói đến nhà thiết kế, bạn có thể chỉ cần nhấp vào thuộc tính BackColor và xóa bất kỳ nội dung nào trong đó và sau đó nhấn enter. Điều này sẽ đặt lại thuộc tính về giá trị mặc định của thuộc tính.

Nếu bạn muốn viết mã, bạn có thể đặt thuộc tính BackColor thành Color.Empty và điều này sẽ có tác dụng tương tự.

+1

Làm việc quyến rũ, cảm ơn! –

1

Trong trường hợp không có cách nào để đặt lại điều khiển để nó sẽ tự động thay đổi màu nền khi bật/tắt, tôi khuyên bạn nên sử dụng sự kiện UIElement.IsEnabledChanged để đặt màu nền đã bật/tắt mong muốn. Tôi hy vọng điều này là hữu ích!

+0

Tôi nghĩ câu trả lời của bạn có thể nói về khi sử dụng WPF. Câu hỏi của anh ta hướng đến winforms (dựa trên các thẻ) – dustyburwell

+0

+1 Cảm ơn Adam, đó là khá nhiều những gì tôi đã làm, tôi đã đi với một giải pháp được đăng ở đây vì nó rất có thể sẽ hoạt động trên các lược đồ màu không chuẩn. –

1

SystemColors.Window là (thường) màu trắng. Sử dụng SystemColors.Control.

Bạn có thể, tất nhiên, lưu bộ nhớ cache màu được sử dụng khi bạn đặt nó vào của riêng bạn, sau đó sử dụng màu đó để đặt lại. Cuối cùng, mặc dù, một trong hai cách tiếp cận sẽ làm việc.

+0

Caching màu luôn luôn là một ý tưởng tốt :) để bạn có thể trả lại nó về trạng thái trước đó của nó. Mặc dù nó là một giải pháp khó khăn khi bạn nói, xoay giữa 5 hoặc 6 màu. – kralco626

3
TextBox.ResetBackColor() 

Nó không bật lên trong IntelliSense vì lý do nào đó, nhưng ở đó và nó biên dịch.

+1

Tôi có lẽ sẽ tránh điều này, vì chức năng "Reset [PropertyName]" là một phần của khung tuần tự hóa. Trừ khi có một lý do thuyết phục, tôi sẽ tránh sử dụng các chức năng được cố ý loại trừ khỏi Intellisense. –

+0

+1 cho điều này, tôi đã đi với giải pháp @ ascalonx mặc dù vì lý do @Adam Robinson đã đề cập (Ít nhất giải pháp của bạn đã hoạt động, không chắc chắn về loại thuốc Adam đang sử dụng);) –