工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VB.net > 正文
VB.NET状态栏控件上添加任意控件
[文章信息]
作者:莫艺潜
时间:2004-09-24
出处:天极网
责任编辑:方舟
[文章导读]
微软提供的标准控件总是很简单,.NET也很好地继承了微软的这一“优良传统”
advertisement
热点推荐
· Java加密和数字签名编程快速入门
· 在VB6中用命令行为模式控制GUI动作
· Excel图表向导详解
· 浅析各种计算机病毒应对方法
· 2月16日软件精选 春节文章精彩回顾
[正文]
  微软提供的标准控件总是很简单,.NET也很好地继承了微软的这一“优良传统”。近日我因编程的需要,需要在状态栏做一个进度条,查看了Statusbar中各个Panel对象提供的所有功能,都没有直接将进度条控件放在面板中的方法,看了MSDN中的描述:在DrawItem事件中若要显示 StatusBarPanel(显示进度栏),则可以使用此事件在面板上执行进度栏的描述操作。如果什么都要我自己画出来的话,我还要控件干什么。当时我被迫自己用了二三十行代码摸拟了一个进度条,可怜啊!事后我冥思苦想了很久,终于发现微软其实是已经将任意的控件放在状态栏的方法提供了给我,只不过我没有觉悟而已,下面小子将以这一方法介绍给大家。

  这个示例是将一个按钮放在状态栏的第一个面板上,第二个面板显示按钮点击时鼠标的屏幕坐标。首先在窗体放入下表中的控件并按之设置各控件属性

控件类型 属性 设置值
Panel Name Panel1
Dock Bottom
StatusBar Name StatusBar1
Dock Fill
Panels 1、加入一个Name为stabutton的面板将其Style设为OwnerDraw。
2、加入一个Name为staStatus的面板,将其Style设为Text,AutoSize设为Spring,Text设为“状态栏上放置控件”。
Button Name Button1

  注:StatusBar1、Button1均需为Panel1的子控件,具体做法是先画出Panel1,然后选定它,再在其上画出StatusBar1和Button1,再设置StatusBar1和Button1的相应属性,这样一来StatusBar1和Button1就会随Panel的移动而移动了(这是日后不会导致窗体上因控件过多而出现混乱的较好方法)。

  窗体的代码中加入如下代码:

Private Sub StatusBar1_DrawItem _
(ByVal sender As Object, ByVal sbdevent As System.Windows.Forms.StatusBarDrawItemEventArgs) _
Handles StatusBar1.DrawItem
 If sbdevent.Panel Is stabutton Then
 ‘此处是关键,一定要根据Statusbar控件中相应面板的调整大小时,
 ‘将放置在该面板上用户放置的控件(此处是Button1)调整为面板的尺寸。
 ‘,在sbdevent.Bounds提供的面板大小中使用的坐标系统原点是在StatusBar1的左上角,
 ‘而因为Button1.Bounds使用的坐标系统的原点都是在Panel1的左上角,而StatusBar1和Button1的父对象
 ‘同为Panel1,所以只需将sbdevent.Bounds的X及Y坐标加上StatusBar1.Location的X和Y做一个平移
 ‘就可以得到Button1所应处的正确位置。

  Button1.Bounds = New Rectangle(sbdevent.Bounds.X + StatusBar1.Location.X, _
   sbdevent.Bounds.Y + StatusBar1.Location.Y, _
   sbdevent.Bounds.Width, _
   sbdevent.Bounds.Height)
 End If
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
 StatusBar1.Panels(1).Text = "你点击了按钮,鼠标位置为" & Cursor.Position.ToString
End Sub

  一切OK,按下运行按钮执行程序就可以看到运行结果了。

  看了以上代码,大伙儿明白了吧,只要将需要放上控件的状态栏面板的Style属性设为OwnerDraw,然后在状态栏的DrawItem中利用sbdevent提供Bounds中的坐标针对对应的面板调整控件的尺寸即可,放任何控件都可以。呵呵,所有的一切就那么简单。

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • Visual Baisc.NET菜鸟入门实例讲座
  • VB.NET编程中调用Windows API
  • Visual Basic.Net中的字符串处理
  • 在VB.NET编程中使用数组
  • VB.NET编写测试硬盘速度的程序
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • 国信办督战八大行业灾难备份 将出台国家标准
  • 中国IT企业走进欧盟 搭第六框架计划直通车
  • 美邦银行用户注意 警惕新型“钓鱼”邮件
  • 微软三年时间磨出新IE 具有更强大安全性能
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索