• 主页
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API

控件的使用问题:Button和ListBox

御南 2007-03-27 11:40:00
在VB.NET中使用控件进行开发时,遇到了两个问题:

1、Button的BackGroundImage属性

我想把Button的BackGroundImage进行切换,在Button的Click事件中,如果目前的BackGroundImag是My.Resource.img1,则切换成My.Resource.img2;反之,如果目前的BackGroundImag是My.Resource.img2,则切换成My.Resource.img1,问题是,在if条件语句中,不能用等号(=)进行逻辑判断目前的BackGroundImage是什么,错误提示是“没有为类型image提供‘=’运算...”(原话记不太清楚了),改成Is运算符,未提示有错,但程序运行时没有任何反应;再用Equals方法,仍然不能解决问题。请问用什么方法可以判断目前的BackGroundImage是什么?

2、ListBox中Item的拖动问题

在窗体上,有一个ListBox控件,Item如下:
---------------------------------------
beijing
shanghai
tianjin
dalian
chongqing
chengdu
guangzhou

我现在想通过鼠标拖动ListBox中的项来改变它在ListBox中的位置,比如,把第4条记录daliang,通过鼠标的拖动移到beijing后面(或其他任何位置),请问该如何实现?
...全文
272 点赞 收藏 18
写回复
18 条回复
御南 2007年04月01日
to:UserInfo(神话)
你给的方法只能让label往一个方向移动,当移动到指定位置的时候,就只在那个位置±1像素的地方移动了

不过还是谢谢你!
回复 点赞
liangfengxx 2007年03月30日
不太好整,帮你顶一下!
回复 点赞
UserInfo 2007年03月30日
窗体上放置一个Label,然后添加一个Timer,在Timer的Tick事件中,我想实现让Label的X坐标变化的功能,也就是让Label能够水平移动,移动到一定位置后又沿相反方向移动,试一了下,未果,还请高手指点一、二,谢谢~~~~~

Dim Ff As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim P As New Point


If Label1.Location.X >= (Form1.Width - Label1.Width - 10) Then
P.X = Label1.Location.X - 12
P.Y = Label1.Location.Y
Label1.Location = P
Ff = True
Else
If Ff = False Then
P.X = Label1.Location.X + 12
P.Y = Label1.Location.Y
Label1.Location = P
Else
P.X = Label1.Location.X - 12
P.Y = Label1.Location.Y
Label1.Location = P
If Label1.Location.X <= 12 Then
Ff = False
End If
End If
End If
End Sub
回复 点赞
御南 2007年03月28日
To:snto(神中神),用flash或gif动画是一个办法,但是在项目中,Label上的文字是不确定的,所以用flash或gif动画不太现实!不可能每次改变文字都做一个flash或gif动画吧~~~~~~~~
回复 点赞
御南 2007年03月28日
对于第一个问题,现在已经解决了,谢谢各位!

对于第二个问题,现在还在研究中~~~~~~~~~`

To:feiyun0112(http://feiyun0112.cnblogs.com/),你个的DragDrop代码挺面熟的,呵呵~~~
回复 点赞
御南 2007年03月28日
小顶一下~~~~~~~~~~~~~~~~
回复 点赞
御南 2007年03月27日
回去试一下先~~~~~~~~~~~~~~~~~
回复 点赞
snto 2007年03月27日
同意 feiyun0112(http://feiyun0112.cnblogs.com/)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If sender.BackgroundImage IsNot Nothing Then
If sender.tag = 1 Then
sender.BackgroundImage = My.Resources.Image2
sender.tag = 2
Else
sender.BackgroundImage = My.Resources.Image1
sender.tag = 1
End If
Else
sender.BackgroundImage = My.Resources.Image1
sender.tag = 1
End If
End Sub
回复 点赞
dutguoyi 2007年03月27日
1.建议使用变量来标识当前图片的状态。
2.http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c87c.aspx#q565q
How do I implement Drag and Drop support between ListBoxes?
参考一下这个答案,在鼠标托拽事件中写内容。
回复 点赞
feiyun0112 2007年03月27日
1 用一个变量保存目前的BackGroundImage是什么,比如Button。tag属性

2、可以用DragDrop 事件
Private Sub ListDragTarget_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragDrop
' Ensures that the list item index is contained in the data.

If (e.Data.GetDataPresent(GetType(System.String))) Then

Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)

' Perform drag-and-drop, depending upon the effect.
If (e.Effect = DragDropEffects.Copy Or _
e.Effect = DragDropEffects.Move) Then

' Insert the item.
If (indexOfItemUnderMouseToDrop <> ListBox.NoMatches) Then
ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item)
Else
ListDragTarget.Items.Add(item)

End If
End If
' Reset the label text.
DropLocationLabel.Text = "None"
End If
End Sub






*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
回复 点赞
lishengpeng_1982 2007年03月27日
这个 判断 一下 你的 Label 的属性就行了吧

location 属性 还有 left ,top 属性吧
慢慢算一下!
回复 点赞
snto 2007年03月27日
楼主是否考虑用flash或者gif代替label,一样可以实现的,也很简单的
回复 点赞
御南 2007年03月27日
项目需要啊~~~~~~~~~~~~

我把Label移动是为了使Label上的文字能更吸引注意力!
就像网页上一些可以移动的文字一样,呵呵~~~~~
回复 点赞
scow 2007年03月27日
写个循环,慢慢改变label坐标罗。一次指定了那是很快。
另外:一般写form是避免闪烁,为何楼主需求相反呢。
回复 点赞
御南 2007年03月27日
我自己试了一下,Label一瞬间就移动到指定的水平位置了,我是想很缓慢的移动,请问该怎么实现?

谢谢
回复 点赞
御南 2007年03月27日
呵呵,还有一个问题要麻烦大家:

窗体上放置一个Label,然后添加一个Timer,在Timer的Tick事件中,我想实现让Label的X坐标变化的功能,也就是让Label能够水平移动,移动到一定位置后又沿相反方向移动,试一了下,未果,还请高手指点一、二,谢谢~~~~~
回复 点赞
御南 2007年03月27日
晚上回去试了才晓得!
回复 点赞
leixueqiyi 2007年03月27日
同意 feiyun0112(http://feiyun0112.cnblogs.com/)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If sender.BackgroundImage IsNot Nothing Then
If sender.tag = 1 Then
sender.BackgroundImage = My.Resources.Image2
sender.tag = 2
Else
sender.BackgroundImage = My.Resources.Image1
sender.tag = 1
End If
Else
sender.BackgroundImage = My.Resources.Image1
sender.tag = 1
End If
End Sub

结果呢? 成功了不?
回复 点赞
发动态
发帖子
VB
创建于2007-09-28

1.1w+

社区成员

11.0w+

社区内容

VB技术相关讨论,主要为经典vb,即VB6.0
社区公告
暂无公告