winformに2つのコンボボックスがあり、リストの "MyList"の値がすべて選択されています。最初の、以後のインデックス。しかし、アイテムがコンボボックスにロードされるときに問題があると私は思う。 BOX2ボックスは、このエラーがスローされた時点でリストからすべての値を持っているにもかかわらず、そのコレクション内に項目を持っていないので、フォームロード前にデータバインディングが機能しない - フォームロード後にのみ初期化される項目
public partial class Form1 : Form
{
public Form1()
{
ComboBox box = new ComboBox();
box.DropDownStyle = ComboBoxStyle.DropDownList;
box.DataSource = MyList.ToList();
box.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
Tab_Page.Controls.Add(box);
ComboBox box2 = new ComboBox();
box2.DropDownStyle = ComboBoxStyle.DropDownList;
foreach (object o in box.Items)
{
box2.Items.Add(o);
}
Tab_Page.Controls.Add(box2);
box2.Items.RemoveAt(0);
//This last line throws an error
//"InvalidArgument=Value of '0' is not valid for 'index'."
}}
エラーです。
私はアイテムコレクションにアイテムがどのようにロードされているのか、どのように修正できるのでしょうか?
詳細で迅速な回答をいただきありがとうございます。 :)それは、 "AddRange"メソッドで動作しましたが、教育的価値のために - 私も "this.Show();を試しましたと "this.Visible = true;" Form1()メソッド(またはクラスなど)内の他のものの前に置くことで、同じエラーが発生しました。 – mathgenius
あなたは歓迎です:)私はもう一度それをチェックしました。 'this.Visible = true;'または 'this.Show();'はデータバインディングを使いたいときの主な解決法です。 forループの前のどこにでも置くだけで十分です。あなたが投稿した正確なmcveをテストしました。しかし、とにかく、そのコンセプトは本当に重要で検証可能です。 –