现在有一个datagridview,总共有4列,前三列为数据,第4列为linkbutton,如下编码     用户名    密码    操作区域
01      a        245    修改
02      b        354    修改
……
如何实现在点击“修改”的时候,密码列变成textbox输入的样式,并且“修改”变成“提交“、”取消”,我记得这个好像在2003 asp。net里面一个控件的模版列,具体的我给忘了,希望大家能够帮忙解决,如果有不清楚的地方请提出来,我及时补充。

解决方案 »

  1.   

    在你的修改按钮的绑定事件中控制 密码 的状态,实现方法有2:
    1:在密码列绑定的时候每个单元格2个控件,1个lable,一个textbox,初始化隐藏textbox,点击修改列按钮的时候让密码列中lable(用来显示你的密码的控件)隐藏,textbox出现,修改列的button的text为提交,触发editend事件将编辑结果更新到lable和数据库控制textbox隐藏,lable显示
    2:直接设置datagridviewcell=new datagridviewtextboxcell();[这样写是没有问题的指定你需要重新更改的cell坐标]将你要改的内容设置为textboxcell,你目前的情况看来不用设置,因为系统默认给你分配的就是textbox,你只需要让指定的cell,用beginedit让其处于编辑状态就行了= =,然后控制你的修改按钮的文字,编辑完了改回来
      

  2.   

    明白了,我就是不知道如何将系统的那个textbox变成编辑状态,原来是使用这个方法,thank you,明天实现后结贴。
      

  3.   

    我刚才查了一下我给你说的第二个方法中,datagridcell没有beginedit方法,那是treeview的我先帮你找找,你如果急就用第一个方法,如果不想用第一个方法,我给你个应急的方法:让你的代码控制要改的cell属性为selected = true ,然后用sendkey 类模拟按键f2;
      

  4.   

    LZ把WebForm的套路搬到WINFORM上来了。其实你可以充分利用Winform响应快速的优点,DataGridView已经内含了编辑功能,而且不需要像你这样在每行都加个提交取消按钮。
      

  5.   

    囧了,小弟才疏学浅,仔细看了下,没有可以直接支持代码让cell处于编辑状态的直接方法和属性
    解决的方法有我上面说的 this.dataGridView1.CurrentCell = this.dataGridView1.Rows[1].Cells[1];
    设置或当前cell然后用然后用sendkey 类模拟按键f2可以编辑
    或者,自定义模板,在cell里面承载textbox控件,方法和我开始告诉你解决第一个问题的方法类似,用textbox的Focus()方法来获取焦点然后隐藏并且将输入内容更新到datagridview的数据源