私のカスタムComboBoxソースは以下のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace IHWinUtility
{
public class IHComboBox : ComboBox
{
private IHComboBoxItems _ihComboBoxItems;
public IHComboBox()
{
this.DropDownStyle = ComboBoxStyle.DropDownList;
_ihComboBoxItems = new IHComboBoxItems(this);
}
new public IHComboBoxItems Items
{
get { return _ihComboBoxItems; }
set { _ihComboBoxItems = (IHComboBoxItems)value; }
}
new public string SelectedValue
{
get { return this.SelectedItem == null ? "" : ((IHComboBoxItem)this.SelectedItem).Value.ToString(); }
}
}
public class IHComboBoxItems : ComboBox.ObjectCollection
{
public IHComboBox _ihComboBox;
public IHComboBoxItems(IHComboBox owner) : base(owner)
{
_ihComboBox = owner;
}
public int Add(string Text, object Value)
{
int _retValue = 0;
IHComboBoxItem _item = new IHComboBoxItem();
_item.Text = Text;
_item.Value = Value;
_ihComboBox.Items.Add(_item);
_retValue = _ihComboBox.Items.Count;
return _retValue;
}
new public void Insert(int index, object item)
{
}
}
public class IHComboBoxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}
}
そして、私は以下のようにそのコンボボックスにいくつかのデータを追加しました:
private void Form1_Load(object sender, EventArgs e)
{
this.ihComboBox1.Items.Add("Text1", "Value1");
}
それはうまくいきました。Text1がコンボボックスにバインドされているのがわかります。しかし、問題は、コンボボックスの矢印をクリックしてselectedItemを変更すると、以下のエラーがスローされることです。
System.ArgumentOutOfRangeException was unhandled Message="InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index
at: System.ArgumentOutOfRangeException System.Windows.Forms.ComboBox.ObjectCollection.get_Item(Int32 index)
at: System.Windows.Forms.ComboBox.get_SelectedItem()
at: System.Windows.Forms.ComboBox.get_Text()
at: System.Windows.Forms.ComboBox.WmReflectCommand(Message& m)
at: System.Windows.Forms.ComboBox.WndProc(Message& m)
at: System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at: System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at: System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
誰かがこのエラーで私を助けることができますか?