vb.netパワーパックのwinform datarepeaterコントロールを使用しています。DataRepeater(VB.Net PowerPack)を反復する
リピータのすべてのアイテムは、チェックボックスの列を除いて読み取り専用です。
アイテムを繰り返し処理し、どのチェックボックスがオンになっているかを確認します。
私はコントロールでdatarepeateritemsのコレクションを見つけることができず、ヘルプが不十分です。
ありがとうございました。
vb.netパワーパックのwinform datarepeaterコントロールを使用しています。DataRepeater(VB.Net PowerPack)を反復する
リピータのすべてのアイテムは、チェックボックスの列を除いて読み取り専用です。
アイテムを繰り返し処理し、どのチェックボックスがオンになっているかを確認します。
私はコントロールでdatarepeateritemsのコレクションを見つけることができず、ヘルプが不十分です。
ありがとうございました。
あなたがコントロールリストを反復可能性(テンプレートから生成)
は「checkBoxUnbound」のDataRepeaterであなたのチェックボックスの名前を変更しています
使用以下のコード
private void button3_Click(object sender, EventArgs e)
{
int i = 0;
CheckBox unboundCheckBox;
foreach (Control c in dataRepeater1.Controls)
{
unboundCheckBox = c.Controls["checkBoxUnbound"] as CheckBox;
if (unboundCheckBox != null && unboundCheckBox.Checked)
{
i++;
}
}
Console.WriteLine("DEBUG: checked found: " + i);
}
なぜデータレピータのデータソースをチェックするだけではないのですか?
など。私は人のためのBindingSourceにバインドされたのDataRepeater 参照ボタンハンドラ
private void Form1_Load(object sender, EventArgs e)
{
List<Person> persons = new List<Person>();
persons.Add(new Person { Name = "Peter", IsLocal = true });
persons.Add(new Person { Name = "Sepp", IsLocal = false });
persons.Add(new Person { Name = "Franz", IsLocal = false });
personBindingSource.DataSource = persons;
}
private void buttonCountCheckBox_Click(object sender, EventArgs e)
{
int i = 0;
foreach (Person singlePerson in personBindingSource)
{
if (singlePerson.IsLocal)
{
i++;
}
}
Console.WriteLine("DEBUG: checked found: " + i);
}
チェックボックスはバインドされておらず、データソースの一部でもありません。これは最初の列で、アクションを確認するために使用されます。選択されたすべてを削除します。 –
他の回答を見る –
これは、しばらく前に頼まれたが、念のために誰が答えを探しています:
for (int i = 0; i < this.dataRepeater1.ItemCount; i++)
{
this.dataRepeater1.CurrentItemIndex = i;
CheckBox checkBox = (CheckBox)
this.dataRepeater1.CurrentItem.Controls["controlName"];
bool isChecked = checkBox.Checked;
}
このアプローチは、それははるかに簡単に同じリピーターアイテムに関連するすべてのコントロールを読む/処理することができます。
私はこれをテストしましたが、私のコントロールに合ったものよりも多くのアイテムがある場合、これはうまくいかないでしょう。つまり、スクロールで表示されるコントロールは 'dataRepeater1.Controls'には表示されません。 @ピーター・グフェーダー、どんなアイデア? – Joel
うーん...現時点ではありません。たぶん、すべてのコントロールを反復する別の方法があります。私はそれが ".Controls"であることを期待していた –
可能な回避策: 'List'、 'Collection'または同じ種類のものは、行の選択などの可能な変更を追跡します。私のために)、私は 'DataRepeater_ItemClick' ou' DataRepeater_DrawItem'のような要素を正しく表示/更新するためのイベントを持っていませんでした。反復するとき、 'DataRepeater'の代わりにリスト/コレクションを繰り返し処理します。洗練されたソリューションではありませんが、機能します。 –
Joel