1

こんにちは、ループでこれを行う必要がありますが、方法がわかりません。単に増やすだけではこれを行うことはできません。

CheckBox[] checkboxarray;

checkboxarray = new CheckBox[] { 
    txtChckBx0,  txtChckBx1,  txtChckBx2,  txtChckBx3,  txtChckBx4,  txtChckBx5, 
    txtChckBx6,  txtChckBx7,  txtChckBx8,  txtChckBx9,  txtChckBx10, txtChckBx11, 
    txtChckBx12, txtChckBx13, txtChckBx14, txtChckBx15, txtChckBx16, txtChckBx17, 
    txtChckBx18, txtChckBx19, txtChckBx20, txtChckBx21, txtChckBx22, txtChckBx23, 
    txtChckBx24, txtChckBx25, txtChckBx26, txtChckBx27, txtChckBx28, txtChckBx29, 
    txtChckBx30, txtChckBx31, txtChckBx32, txtChckBx33, txtChckBx34, txtChckBx35, 
    txtChckBx36, txtChckBx37, txtChckBx38, txtChckBx39, txtChckBx40, txtChckBx41, 
    txtChckBx42, txtChckBx43, txtChckBx44, txtChckBx45, txtChckBx46, txtChckBx47, 
    txtChckBx48, txtChckBx49, txtChckBx50, txtChckBx51, txtChckBx52, txtChckBx53,
    txtChckBx54, txtChckBx55, txtChckBx56, txtChckBx57, txtChckBx58, txtChckBx59, 
    txtChckBx60, txtChckBx61, txtChckBx62, txtChckBx63, txtChckBx64, txtChckBx65, 
    txtChckBx66, txtChckBx67, txtChckBx68, txtChckBx69, txtChckBx70, txtChckBx71, 
    txtChckBx72, txtChckBx73, txtChckBx74, txtChckBx75, txtChckBx76, txtChckBx77, 
    txtChckBx78, txtChckBx79, txtChckBx80
};
4

3 に答える 3

4

チェックボックスがすべてフォーム上にあることがわかっている場合:

var list = new List<CheckBox>();
foreach(var control in this.Controls)
{
    var checkBox = control as CheckBox;
    if(checkBox != null)
    {
        list.Add(checkBox);
    }
}

var checkBoxArray = list.ToArray();

コントロールの場所がわからない場合は、検索する必要があります。

ところで: 上記のコードは WinForms を使用しています。WPF、Silverlight、Metro などを使用している場合、コンテナーの名前は異なります。

于 2012-05-27T06:52:37.610 に答える
0

WinForm で

List<CheckBox> checkBox = new List<CheckBox>();
// Adding checkboxes for testing...
for (int i = 0; i <= 80; i++)
{
    var cbox = new CheckBox();
    cbox.Name = "txtChckBx"+ i.ToString();
    checkBox.Add(cbox);
    Controls.Add(cbox);

}

List<CheckBox> checkBoxfound = new List<CheckBox>();
// loop though all the controls 
foreach (var item in Controls)
{
    // filter for checkboxes and name should start with "txtChckBx"
    if (item is CheckBox && ((CheckBox)item).Name.StartsWith("txtChckBx", StringComparison.OrdinalIgnoreCase))
    {
        checkBoxfound.Add((CheckBox)item);
    }
}
于 2012-05-27T07:02:02.583 に答える
0

新しいことはできません。

checkboxarray = new CheckBox[] { txtChckBx0, ....}

配列を定義するには 2 つの異なる方法があります。あなたがする必要があります:

CheckBox[] checkboxarray = { txtChckBx0, ....}; 

機能させたい場合。

幸運を。

于 2012-05-27T06:52:35.787 に答える