2010-01-31 66 views
0

我目前有一个由文本框和两个按钮组成的窗体应用程序(上一个和下一个)文本框绑定到列表上的Person名称。上一个和下一个按钮将BindingManager的位置更改为1(增量或减量)。Windows窗体绑定问题:如何知道用户是否已更改值

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private List<Person> stringList; 

     BindingManagerBase bindingManager; 

     public Form1() 
     { 
      InitializeComponent(); 

      stringList = new List<Person>(); 
      stringList.Add(new Person{ name = "person1" }); 
      stringList.Add(new Person { name = "person2" }); 
      stringList.Add(new Person { name = "person3" }); 
      stringList.Add(new Person { name = "person4" }); 

      bindingManager = this.BindingContext[stringList]; 

      bindingManager.CurrentChanged += handleCurrentChanged; 

      textBox1.DataBindings.Add(new Binding("Text", stringList, "name")); 


     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void handleCurrentChanged(object sender, EventArgs e) 
     { 
      MessageBox.Show("handleCurrentChanged"); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      bindingManager.Position++; 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      bindingManager.Position--; 
     } 
    } 

    public class Person 
    { 
     public String name { get; set; } 
    } 
} 

需要提示用户何时按下上一个或下一个按钮是否保存其变更。但前提是他对文本框做了一些修改。

我的问题是如何知道是否有人对象的一些变化,以便我可以启动提示。我打算使用BindingManagerBase的currentChanged事件,但这只会检查您是否更改了您在列表中工作的项目。我也无法检查文本框,因为上一个和下一个按钮也是这样操作的,我不想提示用户。

回答

0

您可以在person类中实现INotifyPropertyChanged接口,然后每次在Person类中更改属性时都会通知您的GUI类。

相关问题