none
提问个关于datagridview的问题,选中行改变时,将当前选中行的值赋给textbox RRS feed

  • 问题

  •         private void dgv_ShowClass_CurrentCellChanged(object sender, EventArgs e)
            {
                txt_AddClass.Text = dgv_ShowClass.Rows[dgv_ShowClass.CurrentCell.RowIndex].Cells[0].Value.ToString();
            }
    
    这是选中行改变时代码,但是如果我添加或删除行的时候就会提示出错。“未处理NullReferenceException,未将对象引用设置到对象实例。”


    C#初学者!~~~

    2012年7月12日 7:09

答案

  • 参考设置和代码:

    1)(行选中,更直观)。

    2)代码:

      public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Id"typeof(int));
                dt.Columns.Add("Name"typeof(string));
     
                for (int i = 1; i < 11; i++)
                {
                    dt.Rows.Add(i, "name" + i);
                }
     
                dataGridView1.DataSource = dt;
            }
     
            private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
            {
                if (dataGridView1.SelectedRows.Count > 0 && dataGridView1.SelectedRows[0].IsNewRow == false)
                {
                    label1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                }
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                if (dataGridView1.SelectedRows.Count > 0 && dataGridView1.SelectedRows[0].IsNewRow==false)
                {
                    dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
                }
            }
        }

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

    2012年7月12日 8:02
    版主

全部回复

  • >>但是如果我添加或删除行的时候就会提示出错

    不是非常理解这句话……,可以展示一下你的完整代码么?


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

    2012年7月12日 7:46
    版主
  • 就是当我点击datagridview的某一行时,将这行里的某一个字段显示到textbox里,这个功能 我已经实现了,但是,当我添加或删除这个datagridview里的某一行时,就会出错,一楼有错误提示。求个保护代码 ,就是当这个datagridview里的行数发生改变时(增加或减少),            txt_AddClass.Text = dgv_ShowClass.Rows[dgv_ShowClass.CurrentCell.RowIndex].Cells[0].Value.ToString();让这段代码不会提示错误。。

    C#初学者!~~~

    2012年7月12日 7:50
  • 参考设置和代码:

    1)(行选中,更直观)。

    2)代码:

      public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Id"typeof(int));
                dt.Columns.Add("Name"typeof(string));
     
                for (int i = 1; i < 11; i++)
                {
                    dt.Rows.Add(i, "name" + i);
                }
     
                dataGridView1.DataSource = dt;
            }
     
            private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
            {
                if (dataGridView1.SelectedRows.Count > 0 && dataGridView1.SelectedRows[0].IsNewRow == false)
                {
                    label1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                }
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                if (dataGridView1.SelectedRows.Count > 0 && dataGridView1.SelectedRows[0].IsNewRow==false)
                {
                    dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
                }
            }
        }

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

    2012年7月12日 8:02
    版主
  • 谢谢东哥,,,

    我要就是这段下面这段代码中的这一句,脑子里有这个概念,就是写不出来。。

                if (dataGridView1.SelectedRows.Count > 0)
                {
                    label1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                }


    C#初学者!~~~

    2012年7月12日 8:06