Microsoftから: "BindingSource.ListChangedイベントは、基になるリストが変更されたとき、またはリストの項目が変更されたときに発生します"。BindingSource ListChangedイベントが位置変更で発生する
私の例では、イベントはすべての位置変更で発生します。フォームには、UserControl、BindingSource、Buttonがあります。
ユーザーコントロールが有するもののTextBoxと二つの特性:私は「テキスト」を使用してコントロールをバインドする場合
void next_Click(object sender, EventArgs e)
{
bindingsource.Position += 1;
}
:フォーム上のボタンのBindingSourceの位置を変更
/// <summary>
/// Is working: ListChanged is not fired
/// </summary>
public override string Text
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
/// <summary>
/// Is not working: ListChanged is fired on Position changes
/// </summary>
public string MyProperty
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
ListChangedイベントは期待どおりに発生しません。
myusercontrol1.DataBindings.Add("Text", bindingsource, "name");
私は位置の変更にListChangedイベントが発生し、「MYPROPERTY」プロパティを使用してコントロールをバインド:
myusercontrol1.DataBindings.Add("MyProperty", bindingsource, "name");
私は、この例のように異なるDataSorcesを、試してみました:
public Example()
{
InitializeComponent();
string xml = @"<states>"
+ @"<state><name>Washington</name></state>"
+ @"<state><name>Oregon</name></state>"
+ @"<state><name>Florida</name></state>"
+ @"</states>";
byte[] xmlBytes = Encoding.UTF8.GetBytes(xml);
MemoryStream stream = new MemoryStream(xmlBytes, false);
DataSet set = new DataSet();
set.ReadXml(stream);
bindingsource.DataSource = set;
bindingsource.DataMember = "state";
bindingsource.ListChanged += BindingNavigator_ListChanged;
myusercontrol1.DataBindings.Add("MyProperty", bindingsource, "name");
}
どのように私はMYPROPERTYを使用してListChangedを回避することができますポジションの変更でイベントが発生しますか?なぜTextプロパティが期待どおりに機能していますが、MyPropertyは機能していませんか?予想通り、事前に
おかげで、 クリスティアン
あなたの偉大な答えはイワンです! – Cristian