vb.net datagridview控件的使用

草履虫程序员 2020-04-29 10:49:16
我在vb.net(2012)版,窗体中有一个文本框和一个datagridview控件。想要实现的功能:通过文本框输入一个数字,在datagridview中自动产生对应的行数。还需要在自动产生行的同时,在行的右边在自动添加两个按钮。文本框中一输入数字,就自动产生行,在同一行就会出现两个按钮。基本实现,效果图如下:

代码如下:
'文本框内容改变事件
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim iLoops As Integer
DataGridView1.Rows.Clear()
If TextBox1.Text = "" Then
MsgBox("请输入行数!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
Exit Sub
End If
iLoops = CInt(TextBox1.Text)
Dim i As Integer
For i = 1 To iLoops
DataGridView1.Rows.Add(CStr(i), "", "", "", Guid.NewGuid().ToString())
Next
AddButton()
End Sub
'添加两个按钮
Private Sub AddButton()
Dim btn1 As DataGridViewButtonColumn = New DataGridViewButtonColumn()
Dim btn2 As DataGridViewButtonColumn = New DataGridViewButtonColumn()
btn1.HeaderText = ""
btn1.Text = "增加"
btn1.Name = "btnSet1"
btn1.Width = 70
btn1.UseColumnTextForButtonValue = True
btn2.HeaderText = ""
btn2.Text = "删除"
btn2.Name = "btnSet2"
btn2.Width = 70
btn2.UseColumnTextForButtonValue = True
DataGridView1.Columns.Add(btn1)
DataGridView1.Columns.Add(btn2)
End Sub
第一次输入有效,但是当第二次在文本框输入的时候,行数是正确的,右边的按钮会增加,一直增加。
如下效果图:

请问如何解决:当文本框任意改变,行数增加,按钮所在的列就只有两列按钮,而不是一直增加。
...全文
2429 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
草履虫程序员 2020-05-08
  • 打赏
  • 举报
回复
引用 1 楼 X-i-n 的回复:
你的业务流程有问题: 1. 按你这么做,需要为每个按钮单独绑定一次点击事件 2. 把生成代码放到text_change里,虽然可以运行,但是会有很严重的误操作问题: a. 比如行数输入10,你的代码会跑两次; b. 输入不合法的数字,你的代码没有校验。 3. 这个datagridview需要设置为“不允许添加”,“不允许删除” 你可以按下面的步骤进行调整: 1. 手工编辑datagridview的列,一共有4个,两个textbox列,两个button列:“编辑”、“值”、“増加按钮”、“删除按钮”,并对“编辑”和“值”两列进行数据绑定,绑定字段为"编辑"和"值"; 2. datagridview设置为“不允许添加”,“不允许删除” 3. 在textbox后面加个按钮,把业务代码放到按钮的click事件里,并添加合法性校验
if not integer.tryparse(textbox1.text, out rowcount as integer) then 
  'tryparse函数的vb写法我不太确定,自己看IDE的提示吧
  messagebox.show ("输入不合法")
  exit sub
end if
dim table as new DataTable
table.columns.add("编号")
table.columns.add("值")
'此处在for循环中用table.rows.add(1, guid.newguid().tostring())添加列
datagridview1.datasource=table.defaultview 
'绑定table的默认视图到 datagridview
4. 在datagridview的cellclick事件里,为増加和删除写代码,通过e.row判断点了哪行,通过e.column判断是否点了“増加”或“删除”
if e.row>0 then
  if e.column=2 then
    '增加按钮的代码
  elseif e.column=3 then
    '删除按钮的代码
  end if
end if
引用 1 楼 X-i-n 的回复:
你的业务流程有问题: 1. 按你这么做,需要为每个按钮单独绑定一次点击事件 2. 把生成代码放到text_change里,虽然可以运行,但是会有很严重的误操作问题: a. 比如行数输入10,你的代码会跑两次; b. 输入不合法的数字,你的代码没有校验。 3. 这个datagridview需要设置为“不允许添加”,“不允许删除” 你可以按下面的步骤进行调整: 1. 手工编辑datagridview的列,一共有4个,两个textbox列,两个button列:“编辑”、“值”、“増加按钮”、“删除按钮”,并对“编辑”和“值”两列进行数据绑定,绑定字段为"编辑"和"值"; 2. datagridview设置为“不允许添加”,“不允许删除” 3. 在textbox后面加个按钮,把业务代码放到按钮的click事件里,并添加合法性校验
if not integer.tryparse(textbox1.text, out rowcount as integer) then 
  'tryparse函数的vb写法我不太确定,自己看IDE的提示吧
  messagebox.show ("输入不合法")
  exit sub
end if
dim table as new DataTable
table.columns.add("编号")
table.columns.add("值")
'此处在for循环中用table.rows.add(1, guid.newguid().tostring())添加列
datagridview1.datasource=table.defaultview 
'绑定table的默认视图到 datagridview
4. 在datagridview的cellclick事件里,为増加和删除写代码,通过e.row判断点了哪行,通过e.column判断是否点了“増加”或“删除”
if e.row>0 then
  if e.column=2 then
    '增加按钮的代码
  elseif e.column=3 then
    '删除按钮的代码
  end if
end if
rowcount 这个是什么变量?
草履虫程序员 2020-04-30
  • 打赏
  • 举报
回复
引用 1 楼 X-i-n 的回复:
你的业务流程有问题: 1. 按你这么做,需要为每个按钮单独绑定一次点击事件 2. 把生成代码放到text_change里,虽然可以运行,但是会有很严重的误操作问题: a. 比如行数输入10,你的代码会跑两次; b. 输入不合法的数字,你的代码没有校验。 3. 这个datagridview需要设置为“不允许添加”,“不允许删除” 你可以按下面的步骤进行调整: 1. 手工编辑datagridview的列,一共有4个,两个textbox列,两个button列:“编辑”、“值”、“増加按钮”、“删除按钮”,并对“编辑”和“值”两列进行数据绑定,绑定字段为"编辑"和"值"; 2. datagridview设置为“不允许添加”,“不允许删除” 3. 在textbox后面加个按钮,把业务代码放到按钮的click事件里,并添加合法性校验
if not integer.tryparse(textbox1.text, out rowcount as integer) then 
  'tryparse函数的vb写法我不太确定,自己看IDE的提示吧
  messagebox.show ("输入不合法")
  exit sub
end if
dim table as new DataTable
table.columns.add("编号")
table.columns.add("值")
'此处在for循环中用table.rows.add(1, guid.newguid().tostring())添加列
datagridview1.datasource=table.defaultview 
'绑定table的默认视图到 datagridview
4. 在datagridview的cellclick事件里,为増加和删除写代码,通过e.row判断点了哪行,通过e.column判断是否点了“増加”或“删除”
if e.row>0 then
  if e.column=2 then
    '增加按钮的代码
  elseif e.column=3 then
    '删除按钮的代码
  end if
end if
请给我再指点下?谢谢
草履虫程序员 2020-04-29
  • 打赏
  • 举报
回复
引用 1 楼 X-i-n 的回复:
你的业务流程有问题: 1. 按你这么做,需要为每个按钮单独绑定一次点击事件 2. 把生成代码放到text_change里,虽然可以运行,但是会有很严重的误操作问题: a. 比如行数输入10,你的代码会跑两次; b. 输入不合法的数字,你的代码没有校验。 3. 这个datagridview需要设置为“不允许添加”,“不允许删除” 你可以按下面的步骤进行调整: 1. 手工编辑datagridview的列,一共有4个,两个textbox列,两个button列:“编辑”、“值”、“増加按钮”、“删除按钮”,并对“编辑”和“值”两列进行数据绑定,绑定字段为"编辑"和"值"; 2. datagridview设置为“不允许添加”,“不允许删除” 3. 在textbox后面加个按钮,把业务代码放到按钮的click事件里,并添加合法性校验
if not integer.tryparse(textbox1.text, out rowcount as integer) then 
  'tryparse函数的vb写法我不太确定,自己看IDE的提示吧
  messagebox.show ("输入不合法")
  exit sub
end if
dim table as new DataTable
table.columns.add("编号")
table.columns.add("值")
'此处在for循环中用table.rows.add(1, guid.newguid().tostring())添加列
datagridview1.datasource=table.defaultview 
'绑定table的默认视图到 datagridview
4. 在datagridview的cellclick事件里,为増加和删除写代码,通过e.row判断点了哪行,通过e.column判断是否点了“増加”或“删除”
if e.row>0 then
  if e.column=2 then
    '增加按钮的代码
  elseif e.column=3 then
    '删除按钮的代码
  end if
end if
您能否给我再详细点,贴上完整的代码以及过程,我是菜鸟!
X-i-n 2020-04-29
  • 打赏
  • 举报
回复
你的业务流程有问题: 1. 按你这么做,需要为每个按钮单独绑定一次点击事件 2. 把生成代码放到text_change里,虽然可以运行,但是会有很严重的误操作问题: a. 比如行数输入10,你的代码会跑两次; b. 输入不合法的数字,你的代码没有校验。 3. 这个datagridview需要设置为“不允许添加”,“不允许删除” 你可以按下面的步骤进行调整: 1. 手工编辑datagridview的列,一共有4个,两个textbox列,两个button列:“编辑”、“值”、“増加按钮”、“删除按钮”,并对“编辑”和“值”两列进行数据绑定,绑定字段为"编辑"和"值"; 2. datagridview设置为“不允许添加”,“不允许删除” 3. 在textbox后面加个按钮,把业务代码放到按钮的click事件里,并添加合法性校验
if not integer.tryparse(textbox1.text, out rowcount as integer) then 
  'tryparse函数的vb写法我不太确定,自己看IDE的提示吧
  messagebox.show ("输入不合法")
  exit sub
end if
dim table as new DataTable
table.columns.add("编号")
table.columns.add("值")
'此处在for循环中用table.rows.add(1, guid.newguid().tostring())添加列
datagridview1.datasource=table.defaultview 
'绑定table的默认视图到 datagridview
4. 在datagridview的cellclick事件里,为増加和删除写代码,通过e.row判断点了哪行,通过e.column判断是否点了“増加”或“删除”
if e.row>0 then
  if e.column=2 then
    '增加按钮的代码
  elseif e.column=3 then
    '删除按钮的代码
  end if
end if

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧