リストボックスコントロールの使用:
1)制御プロパティ
アイテム
SelectedItems
selectiomodes
2)データバインディング
DataSoure
displaymember
ValueMenber
3)例
以下は、リストボックスコントロールの使用を1つずつ上回ることを説明し始めます。
まず、コントロールの特性について話しましょう。
(1)項目:このプロパティを使用して、リスト制御アイテムのプロパティを取得します。このプロパティを使用して、リストコントロール内の選択したアイテムを決定できます。アイテムを追加すると、設計中に静的に追加するか、コードに動的に追加できます。設計時に追加されたアイテムを表示したくない場合は、これをコードにlistbox1.items.clear()を追加できます。コードに追加されたオプションのみが表示されます。
(2)SelectedItems:リストボックスに現在選択されているアイテムを含むコレクションを取得します。
(3)selectiomodes:ListBoxでアイテムを選択するために使用される方法を取得または設定します。選択する4つの値があります。デフォルトはSelectionMode.Oneで、1つだけを選択できます。プロパティ値は選択できません。 MultiSextendedが押されたら、シフトキーまたはShiftキーと矢印キー(上、下、左と右)の1つを同時にクリックしながらマウスをクリックして、選択したコンテンツが以前の選択されたアイテムから現在のアイテムに拡張されます。マウスをクリックしながらCTRLキーを押すと、リスト内のアイテムを選択または選択しません。プロパティがMultimpleに設定されている場合、スペースバーをクリックまたは押すと、リスト内のアイテムを選択または解除します。
次に、データバインディングについて話しましょう。通常、データは可変であるため、データバインディングが必要です。データバインディングにはいくつかのタイプがあります。 1つは、データベースから取得したデータテーブルまたはデータセットをバインドすることです。もう1つは、クラスをカスタマイズして、カスタムクラスのデータをバインドすることです。 C#のデータバインディングとASP.NETのデータバインディングの間には少し違いがあります。 ASP.NETでデータをバインドした後、DataBindメソッドを呼び出す必要がありますが、C#では必要ありません。 DisplayMemberは、表示するプロパティを取得または設定します。
最後に、図に示すように例を挙げましょう。
いくつかの重要な方法の実装について話しましょう。特定のコードはここに記述されません。左の境界にあるオプションを右の境界に置きます。コード:
コードコピーは次のとおりです。
for(int i = this.listbox1.selectedItems.count -1; i> = 0; i-)
{
メニューメニュー=(メニュー)this.listbox1.selectedItems [i];
this.listbox2.items.add(メニュー);
this.listbox1.items.remove(i);
}
上記の関数は実装されていますが、問題があります。つまり、左側の項目は右に到達した後に逆の順序になります。これは、追加を記述して別々に移動するために必要なコード、コードです。
コードコピーは次のとおりです。
for(int i = 0; i <this.listbox1.selectedItems.count; i ++)
{
メニューメニュー=(メニュー)this.listbox1.selectedItems [i];
this.listbox2.items.add(メニュー);
}
for(int i = this.listbox1.selectedItems.count-1; i> = 0; i--)
{
this.listbox1.items.remove(i);
}
これまでに、ボックス内の最初のいくつかのアイテムを選択すると、右を移動する問題はありませんが、次のいくつかのアイテムを選択すると、次のいくつかのアイテムが右のボックスに移動され、最初のいくつかのアイテムが左ボックスから移動されます。この問題の理由は、私たちがそうすることです
SelectedItemsとアイテムは混乱しています。これは、多くの初心者が作る傾向がある間違いです。コード: