鼠标点击文本框背景色改变的问题

ccbbcc 2019-01-17 04:29:33

我想实现这个功能。我鼠标点击上图任何一个文本框,这一行所有的文本框背景色
都变成绿色。如何实现,谢谢!
...全文
385 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccbbcc 2019-01-19
  • 打赏
  • 举报
回复
是只删除“那一行的内容(下面的内容可以‘移上来’)”
我用listview控件实现了
舉杯邀明月 2019-01-18
  • 打赏
  • 举报
回复
引用 11 楼 ccbbcc 的回复:
谢谢!用控件数组删除一行,如何操作呢?

问题在于你这个“删除”操作的行为如何定义 …………
 是只删除“那一行的内容(下面的内容可以‘移上来’)”?
 还是内容、控件对象都删除(上移之后,窗体下方留空白区)?
ccbbcc 2019-01-18
  • 打赏
  • 举报
回复
谢谢!用控件数组删除一行,如何操作呢?
舉杯邀明月 2019-01-18
  • 打赏
  • 举报
回复
如果是“行数”比较多的话,用表格控件或ListView控件,
 比用一堆文本框来“堆表格”好一些。
舉杯邀明月 2019-01-18
  • 打赏
  • 举报
回复
哦,如果你说的“删除”,
其实只是删除对应的那行数据(也可以删除后“把下载的数据移上来”),
用固定的控件数组也行,不需要动态控件数组。
ccbbcc 2019-01-18
  • 打赏
  • 举报
回复
举杯邀明月,那删除怎么办呢?谢谢!
舉杯邀明月 2019-01-18
  • 打赏
  • 举报
回复
我觉得就用“控件数组+动态加载/卸载”,没什么难的。



ccbbcc 2019-01-18
  • 打赏
  • 举报
回复
谢谢!忘了一点,选中任一行,点击删除,可以删除一行
milaoshu1020 2019-01-17
  • 打赏
  • 举报
回复
withevents mobjTextBox as TextBox
这一行改成:
public withevents mobjTextBox as TextBox
milaoshu1020 2019-01-17
  • 打赏
  • 举报
回复
private mcolitems as collection
这一行改成:
private mcolitems as new collection
milaoshu1020 2019-01-17
  • 打赏
  • 举报
回复
通过类的方式可以实现:

TextBoxItem类:
withevents mobjTextBox as TextBox
...
需要添加的事件处理过程,可通过下拉列表创建.左侧组合框选择mobjTextBox,右侧列表框选择事件.
...

TextBoxCollection类:
private mcolitems as collection

public sub Add(tb as textbox)
dim objitem as TextBoxItem
set objitem = new textboxitem
set objitem.mobjtextbox = tb
mcolitems.add(objitem)
end sub

public sub Clear()
dim i as long
for i = 1 to mcolitems.count
set mcolitems(1).mobjTextBox = nothing
mcolitems.remove(1)
next
end sub

窗口代码:
private mcolTextBoxes as new TextBoxCollection

private sub form_load()
mcoltextboxes.add TextBox1
mcoltextboxes.add TextBox2
mcoltextboxes.add TextBox3
... (添加所有需要变色的TextBox.)
end sub

private sub form_unload()
mcoltextboxes.clear
end sub

当然,通过控件数组的方式也可以实现.
脆皮大雪糕 2019-01-17
  • 打赏
  • 举报
回复
修订一下代码 ,第三行,控件数组不能那样用,改成下面这个

For i = 0 To Text1.UBound
脆皮大雪糕 2019-01-17
  • 打赏
  • 举报
回复
1、最笨的办法,挨个写 2、照着你现在做成的这个样子,文本框改成控件数组然后顺序排列,比如你的35个框,控件数组下标从0 to 34 那么当有点击事件的时候事件参数会传入index 取 index\5 (注意斜杠方向)就是文本框所处的行(从0开始),接下来遍历所有index,和你这个行号相同的背景色改成XXX,不同的改为白色。

Private Sub Text1_Click(Index As Integer)
    Dim i As Integer
    For i = 0 To UBound(Text1)
        If i \ 5 = Index \ 5 Then
            Text1(i).BackColor = vbRed
        Else
            Text1(i).BackColor = vbWhite
        End If
    Next
End Sub

3、这特么不是想做个网格么,用grid或者listview控件搞定会省事很多。

7,759

社区成员

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

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