コントロール:C#の場合、それぞれの私は私の公開をForm1()内のコードを持って
foreach (Control c in Controls)
{
if (c is CheckBox)
{
}
}
私がチェックボックスのいずれかがクリックされたときにイベントをトリガされませんしているよ、それは問題ではありません。どれ。
An object reference is required for the non-static field, method, or property 'CheckBox.Checked'
はこれを回避する方法があります:そう、例えば:私はどのチェックボックスを指定したhaventので
if(CheckBox.Checked == True) {
//do something to the checked checkbox
}
もちろん、これは、エラーがスローされますか?私は同じイベントを次のようなすべてのチェックボックスに適用しています:
if (TestBox.Checked == true)
{//Do Something}
else {//Do Something}
if (TestBox2.Checked == true)
{//Do Something}
else {//Do Something}
私のコードは非常に非効率です。
EDIT:この反復は唯一の偽== cb.Checked througループ、および他を無視....以下
foreach (var cb in Controls.OfType<CheckBox>())
{
if (cb.Checked == false)
{
cb.BackgroundImage = Image.FromFile("M:\\Phase IX (Jeremy, Sandima)\\Icons\\ CheckboxUncheck_18x.png");
cb.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
cb.FlatAppearance.BorderSize = 0;
// make all four (!) BackColors transparent!
cb.BackColor = System.Drawing.Color.Transparent;
cb.FlatAppearance.CheckedBackColor = Color.Transparent;
cb.FlatAppearance.MouseDownBackColor = Color.Transparent;
}
else
{
cb.BackgroundImage = Image.FromFile("M:\\Phase IX (Jeremy, Sandima)\\Icons\\CheckBox_18x.png");
cb.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
cb.FlatAppearance.BorderSize = 0;
// make all four (!) BackColors transparent!
cb.BackColor = System.Drawing.Color.Transparent;
cb.FlatAppearance.CheckedBackColor = Color.Transparent;
cb.FlatAppearance.MouseDownBackColor = Color.Transparent;
}
}
:私は私がリストにそれらを作り、以下のように進め、自分のcheckchangedイベントで私の外観特性を離れ、代わりに私の無効ボタンこのプロセスを使用しました – Krono