一度に1つのコントロールしか有効にできないパネルを作成したいと思います。 ラジオボタンと同じように機能するはずです。このコードの問題は、それはあなたがコードでフォームを作成する場合にのみ動作することである専用パネルの作成方法
class XClusivePanel : Panel
{
// Init code
// Use this in order to add Exclusive Controls
void AddControl(Control c)
{
if(! Controls.Contains(c))
{
Controls.Add(c);
c.Enabled = false;
c.EnabledChanged += new System.EventHandler(this.control_EnabledChanged);
}
}
// Avoid more than one control enabled at a time.
private void control_EnabledChanged(object sender, EventArgs e)
{
Control s = (Control)sender;
if(s.Enabled == true)
{
foreach(Control c in Controls)
{
if(s != c)
{
s.Enabled = false;
}
}
}
}
}
;:
アイデアは、そのようなものですデザイナを使用してコンポーネントを追加しても機能しません。
ところで、私は.NET CFで作業しています。
他のすべてが無効になっている場合、ユーザーがどのように切り替えますか? – LarsTech
@LarsTech:プログラムの流れは必要なときに制御を可能にする。しかし、コードのどこかでsomeControl.Enabled = trueを実行すると、以前アクティブなコントロールが自動的に無効になります。 – Cristiano