问题一:DataGridView的双击事件非常不灵敏:
我抄了一个DataGridView双击鼠标修改单元格的程序,见下(功能就是双击单元格后,跳出窗口,修改确定,更新原单格):
Form1里面:
 private void dataGridView1_CellMouseDown(object sender, DataGridViewCellEventArgs e)
        {
            Form2 frm = new Form2();
            frm.textBox1.Text = this.dataGridView1.CurrentCell.Value.ToString();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                this.dataGridView1.CurrentCell.Value = frm.textBox1.Text;
            }
但是当我双击dataGridView1中的单元格时,跳出“Form2”的几率非常小---基本上鼠标双击30多次才会触发Form2新窗口一次!这是为什么?????
是不是鼠标双击事件哪里有问题??????
急求高手解答,谢谢问题二:DataGridView的双击事件如何屏蔽行头和列头?
我想让鼠标双击DataGridView的真正内容单元格时,才触发新窗口来修改;而双击第0行与第0列(行头与列头)时,不触发新窗口,该怎么做呢???问题三:DataGridView读取TXT文档,如何只读取选定的几行?
我现在是要读就读取全部的TXT内容,程序见下:
 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("ID");
                dt.Columns.Add("参数1");
                dt.Columns.Add("参数2");
                string fileName = "D:\\AAA.txt";//openFileDialog.FileName;
                StreamReader sr = new StreamReader(fileName, Encoding.Default);
                //strLine = sr.ReadLine(); 
                string strLine = string.Empty;
                while (true)
                {
                    strLine = sr.ReadLine();
                    if (!string.IsNullOrEmpty(strLine))
                    {
                        string[] strList = strLine.Split(' ');
                        DataRow dr = dt.NewRow();
                        dr["ID"] = strList[0];
                        dr["参数1"] = strList[1];
                        dr["参数2"] = strList[2];
                        dt.Rows.Add(dr);
                    }
                    else
                    {
                        break;
                    }
                }
                dataGridView1.DataSource = dt;
            }
        }
上面的程序将读取TXT的全部内容,但我想只读取TXT中的几行(比如仅第5行到第10行),该怎么做呢?????

解决方案 »

  1.   

    第一个 用 CellDoubleClick
    第二个         private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex == -1)
                {
                    MessageBox.Show("行标题");
                }
                if (e.ColumnIndex == -1)
                {
                    MessageBox.Show("列标题");
                }
            }
      

  2.   

    感谢bdmh的热心回复,问题解决了但是第三个问题“DataGridView读取TXT文档,如何只读取选定的几行?”怎么解决呢?
    请高手指教还请bdmh不要神龙见首不见尾,谢谢了
      

  3.   

    第三个
    获取dt后不绑定到dataGridView1
     DataTable dttemp = dt.Clone();
    dttemp.Rows.Add(dt.Rows[行索引].ItemArray);
    dataGridView1.DataSource = dttemp;
      

  4.   

    感谢chinnsyuutou的回复,我又发现了一个现象:
    当我程序执行后(代码见我的问题3),一次执行挺好的;但是却出现了一个问题:
        当我更改dataGridView1的数据源“123.TXT”(原来也是123.TXT中上传的)时,无论我怎么修改123.TXT里面的内容,dataGridView1的内容始终不变(一直为第一次上传123.TXT时里面的内容);
        但实际上123.TXT里面的内容已经改掉了,但dataGridView1却好像卡在那里了,同样的从123.TXT上传,它好像不变了,
    这是为什么??????问题二:
    “第三个
    获取dt后不绑定到dataGridView1
     DataTable dttemp = dt.Clone();
    dttemp.Rows.Add(dt.Rows[行索引].ItemArray);
    dataGridView1.DataSource = dttemp;”
    应该加在哪里啊??谢谢了
      

  5.   


    int i=0;
     while (true)
      {
    i++;
    if(i>4&&i<11)
    {

      strLine = sr.ReadLine();
      if (!string.IsNullOrEmpty(strLine))
      {
      string[] strList = strLine.Split(' ');
      DataRow dr = dt.NewRow();
      dr["ID"] = strList[0];
      dr["参数1"] = strList[1];
      dr["参数2"] = strList[2];
      dt.Rows.Add(dr);
    }
      }
      

  6.   

       int i=0;
     while (true)
      {
        i++;
      strLine = sr.ReadLine();
      if (!string.IsNullOrEmpty(strLine))
      {
       if(i>4&&i<11)
      {
      string[] strList = strLine.Split(' ');
      DataRow dr = dt.NewRow();
      dr["ID"] = strList[0];
      dr["参数1"] = strList[1];
      dr["参数2"] = strList[2];
      dt.Rows.Add(dr);
       }
      }
    加错地方了
      

  7.   

    感谢happy09li的回复,我照做了,但是好像有点小问题:代码如下
     int i = 0;
                    while (true)
                    {
                        i++;
                        if (i > 2 && i < 6)
                        {
                            strLine = sr.ReadLine();
                            if (!string.IsNullOrEmpty(strLine))
                            {
                                string[] strList = strLine.Split(' ');
                                DataRow dr = dt.NewRow();
                                dr["ID"] = strList[0];
                                dr["参数1"] = strList[1];
                                dr["参数2"] = strList[2];
                                dt.Rows.Add(dr);
                            }
                            else
                            {
                            break;
                            }
                        }
                        else
                        {
                            if (i >= 6)
                            {
                                break;
                            }
                        }
                    }
                    dataGridView1.DataSource = dt;
                }
            }
    执行后发现,上述代码能够实现从TXT的第0行到第N行的导入;
                        但不能实现从TXT的第N行到第M行的导入;
    怎么修改才可以呢,我没什么想法。
      

  8.   

    非常感谢happy09li的回复
    问题解决了感谢各位高手的回复结贴了