Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following panel makes any control within it read-only (e.g. unresponsive to clicks/keyboard input) without turning it dark grey.
There is an alternate solution specifically for combobox as presented at the PDC. Code is here.
public class ReadonlyControlHolder : Panel {
private bool readOnly = false;
public bool ReadOnly {
get {
return readOnly;
}
set {
if (readOnly != value) {
readOnly = value;
if (IsHandleCreated) {
SafeNativeMethods.EnableWindow(new HandleRef(this, this.Handle), !readOnly);
}
}
}
}
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
if (ReadOnly) {
SafeNativeMethods.EnableWindow(new HandleRef(this,this.Handle), !readOnly);
}
}
private class SafeNativeMethods {
[DllImport("user32")]
public static extern void EnableWindow(HandleRef hwnd, bool enabled);
}
}