首页 > 解决方案 > 如何获取 ListChanged 事件的对象?

问题描述

要在 中显示数据dataGridView,我使用DataTable, BindingSource
我正在添加一个帖子。

问题。

如何获取新记录的字段Bs_ListChanged

namespace WinFormAppl
{
    public partial class Form1 : Form
    {
        DataTable dataTable = new DataTable();

        BindingSource bs = new BindingSource();


        public Form1()
        {
            InitializeComponent();

            MainMethod();
        }

        /// <summary>
        /// Метод логики
        /// </summary>
        public void MainMethod()
        {   
            bs.ListChanged += Bs_ListChanged;

            ConnectDataToDataGridView();
            AddColumnsDataTable();
            AddRowsDataTable();
        }

        private void Bs_ListChanged(object sender, ListChangedEventArgs e)
        {            
            //sender[i]. ????

        }

        #region Подготовка
        /// <summary>
        /// Connect data to DataGridView
        /// </summary>
        public void ConnectDataToDataGridView()
        {
            bs.DataSource = dataTable;
            dgv.DataSource = bs;
        }

        /// <summary>
        /// Add columns
        /// </summary>
        public void AddColumnsDataTable()
        {
            dataTable.Columns.Add("ID", typeof(int));
            dataTable.Columns.Add("Result", typeof(string));            
        }


        ///// <summary>
        ///// Add rows
        ///// </summary>
        public void AddRowsDataTable()
        {
            dataTable.Rows.Add(new object[] { 1, "str_1"});
            dataTable.Rows.Add(new object[] { 2, "str_2"});
            dataTable.Rows.Add(new object[] { 3, "str_3" });            
        }

        public void AddRowsDataTable_Test()
        {
            dataTable.Rows.Add(new object[] { 4, "str_4" });

        }

        #endregion

        private void button1_Click(object sender, EventArgs e)
        {
            AddRowsDataTable_Test();
        }
    }

更新 1。

在此处输入图像描述


更新 2。

 private void Bs_ListChanged(object sender, ListChangedEventArgs e)
    {
        if (e.ListChangedType == ListChangedType.ItemAdded)
        {
            int i = e.NewIndex;
            BindingSource bs_1 = sender as BindingSource;

            DataRowView drv = bs_1[i] as DataRowView;                

            string s1 = drv.Row.ItemArray[0].ToString();
            string s2 = drv.Row.ItemArray[1].ToString();
        }
    }

标签: c#

解决方案


推荐阅读