none
winform datagridview focus问题? RRS feed

  • 问题

  • 在winform下: 一个datagridview控件;三个textbox控件(A,B,C);

                        若在datagridview控件(10行,3列数据)中的第2行,第1列单元格编辑数据时;

                        这时若用鼠标点击texboxA,; 在CellEndEdit中怎么获取textbox(A,B,C)哪个控件触发了CellEndEdit事件啊?


    大其心,可容天下之物; 虚其心,可受天下之善;

    2012年4月29日 8:49

答案

  • 我不明白你CellEndEdit和TextBox有何关系?CellEndEdit是DataGridView在编辑完特定某个单元格数据,聚焦离开该单元格引发的事件啊。

    1)双击某个单元格,进入编辑状态。

    2)单击其它单元格,触发前一个单元格的事件。

    【Sample】

    namespace CSharp
    {
        public partial class Form1 : Form
        {
            DataGridView dv = new DataGridView();
    
            public Form1()
            {
                InitializeComponent();
               
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                dv.Parent = this;
                dv.Dock = DockStyle.Fill;
                DataTable dt = new DataTable();
                dt.Columns.Add("Id", typeof(int));
                dt.Columns.Add("Name", typeof(string));
                dt.Rows.Add(1, "Name");
                dv.DataSource = dt;
                dv.CellEndEdit += new DataGridViewCellEventHandler(dv_CellEndEdit);
            }
    
            void dv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                MessageBox.Show(dv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
            }
        }
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月29日 9:29
    版主

全部回复

  • 我不明白你CellEndEdit和TextBox有何关系?CellEndEdit是DataGridView在编辑完特定某个单元格数据,聚焦离开该单元格引发的事件啊。

    1)双击某个单元格,进入编辑状态。

    2)单击其它单元格,触发前一个单元格的事件。

    【Sample】

    namespace CSharp
    {
        public partial class Form1 : Form
        {
            DataGridView dv = new DataGridView();
    
            public Form1()
            {
                InitializeComponent();
               
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                dv.Parent = this;
                dv.Dock = DockStyle.Fill;
                DataTable dt = new DataTable();
                dt.Columns.Add("Id", typeof(int));
                dt.Columns.Add("Name", typeof(string));
                dt.Rows.Add(1, "Name");
                dv.DataSource = dt;
                dv.CellEndEdit += new DataGridViewCellEventHandler(dv_CellEndEdit);
            }
    
            void dv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                MessageBox.Show(dv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
            }
        }
    }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月29日 9:29
    版主
  • 哥们,也许我的需求有点变态;

    我想在 void dv_CellEndEdit(object sender, DataGridViewCellEventArgs e)

    事件中获取下一个Focus为true的控件; 也就是下一个获得焦点的控件;

    怎么写啊?


    大其心,可容天下之物; 虚其心,可受天下之善;


    • 已编辑 lfofiug 2012年4月29日 9:42
    2012年4月29日 9:39
  • 我不认为可以——首先你的CellEndEdit是DataGridView,怎么可以获取TextBox?

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月29日 11:56
    版主