http://support.microsoft.com/kb/312045/zh-cn
本文将引用下面的 Microsoft.net 框架类库命名空间:
- System.Data.SqlClient
本页
概要
CurrencyManager 对象允许您绑定的控件用户浏览到一个表中的行时进行同步。 渚嬪 CurrencyManager 允许您在单独的、 绑定 文本框 控...
CurrencyManager 对象允许您绑定的控件用户浏览到一个表中的行时进行同步。 渚嬪
CurrencyManager 允许您在单独的、 绑定
文本框 控件中显示正确的
名字 和
姓氏 属性,如用户浏览到雇员表。
CurrencyManager 具有三个事件: CurrentChanged、 ItemChanged,和 PositionChanged。 跟踪当用户将移至行和绑定的控件中的用户编辑值时,您可以使用这些事件。 本文介绍了哪些操作会导致各种 CurrencyManager 事件被引发。
本文分为以下几节: " Sample code 节演示 CurrencyManager 事件的触发。
CurrencyManager 具有三个事件: CurrentChanged、 ItemChanged,和 PositionChanged。 跟踪当用户将移至行和绑定的控件中的用户编辑值时,您可以使用这些事件。 本文介绍了哪些操作会导致各种 CurrencyManager 事件被引发。
本文分为以下几节: " Sample code 节演示 CurrencyManager 事件的触发。
更多信息
CurrentChanged 事件CurrentChangedCurrencyManager 激发 CurrencyManager 列表中当前行的行的绑定的值更...
CurrentChanged 事件
CurrentChanged CurrencyManager 激发 CurrencyManager 列表中当前行的行的绑定的值更改时的事件。专门, CurrentChanged 的事件在下列情况下 CurrencyManager 激发:
- 当用户更改 CurrencyManager 列表中的行的位置,以便不同的值是绑定的控件中。
- 当用户更改当前行的 CurrencyManager 中绑定的值。
- 当用户添加一个行低于 CurrencyManager 列表中的当前位置的位置。
- 当用户删除 CurrencyManager 列表中的当前行。
- 当用户删除位于列表中的当前位置之前的行。
- 用户通过排序如刷新的列表。
- 用户在列表中的另一个位置以在 CurrencyManager 中移动的当前行。
- 当用户将移到当前的位置列表中某行。
- CurrencyManager 的 数据源 属性的更改时。
ItemChanged 事件
ItemChanged CurrencyManager 激发 CurrencyManager 中的任何行中的任何项目更改直接通过数据源时的事件。 通过用户界面 (UI) 更改值时,则不会触发 ItemChanged 事件。专门, ItemChanged 的事件在下列情况下 CurrencyManager 激发:
- 当用户调用 CurrencyManager 中的 CancelCurrentEdit 的方法。
- 当用户将某一行向 CurrencyManager 列表中。
- 当用户将从 CurrencyManager 列表中删除任何行。
- 当用户更新 CurrencyManager 列表中的任何行。
- 用户通过排序如刷新的 CurrencyManager 列表。
- CurrencyManager 的 数据源 属性的更改时。
PositionChanged 事件
CurrencyManager 列表中的 位置 属性更改时,将触发 PositionChanged 事件。 Position 属性是 CurrencyManager 列表中的行的当前的位置。专门, PositionChanged 的事件在下列情况下 CurrencyManager 激发:
- 当用户移到不同的行,隐式地更改 CurrencyManager 的 位置 属性。
- 当以编程方式更改 CurrencyManager 的 位置 属性。
绀轰緥浠 g 爜
CurrencyManager 事件触发时,此示例代码将显示消息框。 该代码使用 Microsoft SQL Server Northwind 数据库的雇员表。- 创建一个新的 Visual C# Windows 应用程序项目。 榛樿鎯呭喌涓嬶,Form1 添加到项目中。
- 向 Form1 中添加三个 文本框 控件。 默认情况下添加 Textbox1、 Textbox2,和 Textbox3。
- 向 Form1 中添加五个 按钮 控件。 默认情况下将添加 Button1 通过 Button5。
- 更改 按钮 的属性,如下所示:
收起该表格
按钮 (名称) 文本 Button1 cmdFirst << Button2 cmdPrevious < Button3 cmdNext > Button4 cmdLast >> Button5 cmdCancelEdit 撤消 - 打开 Form1 的代码窗口。 将以下代码粘贴到代码窗口的最上端在包含 using 语句的部分:
using System.Data; using System.Data.SqlClient;
- 使其在每个按钮中可用,必须在窗体级别范围内定义 CurrencyManager。 将以下代码粘贴到类声明之前立即 公用 Form1:
private CurrencyManager myCurrencyManager;
- 将以下代码添加到 Form1_Load 事件过程。 此代码将打开雇员表,然后将文本框绑定到 雇员 id、 名字,和 姓氏 属性:
// Open a connection to the SQL Server Northwind database. // Modify the following line to connect with your SQL Server and log on. SqlConnection con = new SqlConnection("server=server;uid=login;pwd=password; database=northwind"); // Open the Employees table. SqlDataAdapter daCust = new SqlDataAdapter("Select * from Employees", con); // Store the Employees into a local table. DataSet ds = new DataSet(); daCust.Fill(ds, "Employees"); // Bind the TextBox controls to the fields of the Employees table. textBox1.DataBindings.Add("Text", ds.Tables["Employees"], "EmployeeID"); textBox2.DataBindings.Add("Text", ds.Tables["Employees"], "FirstName"); textBox3.DataBindings.Add("Text", ds.Tables["Employees"], "LastName"); // Specify the CurrencyManager for the Employees table. myCurrencyManager = (CurrencyManager)this.BindingContext[ds.Tables["Employees"]]; // Specify the event handlers for the CurrencyManager. myCurrencyManager.CurrentChanged += new EventHandler(Current_Changed); myCurrencyManager.ItemChanged += new ItemChangedEventHandler(CurrencyManager_ItemChanged); myCurrencyManager.PositionChanged += new EventHandler(Position_Changed);
- Form1_Load 事件过程后立即粘贴下面的代码。 此代码声明 CurrencyManager 事件,并显示消息框,如每个事件触发:
private void Current_Changed(object sender, EventArgs e) { MessageBox.Show("Current_Changed"); } private void CurrencyManager_ItemChanged(object sender, System.Windows.Forms.ItemChangedEventArgs e){ MessageBox.Show("Item_Changed"); } private void Position_Changed(object sender, EventArgs e){ MessageBox.Show("Position_Changed"); }
- 双击 cmdFirst 以打开其代码窗口。 将以下代码粘贴到 cmdFirst_Click 事件过程:
// Move to the first row in the DataTable. myCurrencyManager.Position = 0;
- 双击 cmdPrevious 以打开其代码窗口。 将以下代码粘贴到 cmdPrevious_Click 事件过程:
// If you are positioned past the first row, if (myCurrencyManager.Position > 0) { // move back one row. myCurrencyManager.Position -= 1; }
- 双击要打开其代码窗口的 cmdNext。 将以下代码粘贴到 cmdNext_Click 事件过程:
// If you are positioned before the last row, if (myCurrencyManager.Position < myCurrencyManager.Count) { //move back one row. myCurrencyManager.Position += 1; }
- 双击 cmdLast 以打开其代码窗口。 将以下代码粘贴到 cmdLast_Click 事件过程:
// Position at the last row. myCurrencyManager.Position = myCurrencyManager.Count;
- 双击 cmdCancelEdit 以打开其代码窗口。 将以下代码粘贴到 cmdCancelEdit_Click 事件过程:
// Cancel the current editing in the bound controls. myCurrencyManager.CancelCurrentEdit();
- 修改连接字符串,使用您 SQL Server 并登录到连接。
- 按 F5 生成并运行的项目。
- 单击要在行之间浏览按钮。 这将引发 CurrentChanged 事件和 PositionChanged 事件。
- 修改 名字 框或 姓氏 框中的值,然后移到不同的行。 这将引发 CurrentChanged 事件和 PositionChanged 事件。
- 修改一个值,然后单击 撤消 取消更改。 这将引发 ItemChanged 事件。
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 308484 (http://support.microsoft.com...
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
308484
(http://support.microsoft.com/kb/308484/ ) 如何通过使用 Visual C#.net 在 Windows 窗体数据网格中显示父和子记录
有关详细信息请参阅 Visual Studio.net 帮助文档中的下列主题:
在 Windows 窗体上的数据的使用者
http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx)
CurrencyManager 类
http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager.aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager.aspx)
CurrencyManager 的事件
http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager_events.aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager_events.aspx)
http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx)
CurrencyManager 类
http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager.aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager.aspx)
CurrencyManager 的事件
http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager_events.aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.currencymanager_events.aspx)