• 您的位置我爱Aspx >> VB.Net >> 构建一个弹出式图象按钮
  • 构建一个弹出式图象按钮

  • 作者:aspxer  来源:internet  日期:2007-5-20 14:01:19  关键字:
  • Me.Focus()

    MyBase.Invalidate()

    End Sub

    Control.Invalidate调用用于告知基类该控件需要被重画。基类依次调用覆盖的OnPaint方法,它通过PaintEventArgs来提供一个GDI+ 图象对象。你可以用该对象共享的DrawImage方法用一行代码绘制一个位图(bitmap),给DrawImage提供图象、位置和大小,选择将哪个图象绘制到鼠标位置。一个很方便的设计态专用的DisplayImageIndex属性会让用户自己选择将哪种图象显示出来。你可以将两种属性用在该方法的声明中:<Category ("Design")>用于告诉Visual Studio属性窗口该在哪里列出该属性,<DesignOnly(True)>用于在运行时将它隐藏起来。给DisplayImageIndex值添加一个枚举,使用户可以通过简单地点击这个值来查看到Down、Up和Hover。DisplayImageIndex使用户无需打开ImageList控件来确保他们选择了正确的用于Down、Up和Hover的ImageIndex值。

    你可以用鼠标位置来选取需要绘制的边框颜色。当焦点集中在控件上时,代码将边框厚度设置为两个象素点,只用于UP状态。建立一个新的Pen对象(不要用缺省的系统的画笔)画出大于一个象素点的一行。不要忘记在完成时调用Dispose方法。你应该根据边框的宽度调整边框矩形的大小,因为控件不能随意在窗体以外进行绘制。

    我从来不喜欢用按钮图象的算法操作来显示up、over和down状态,每个ImageButton均用了三个单独的位图。在一个form中使用许多ImageButtons会导致产生大量的图象,因此我给ImageButton提供了一个ImageList属性,而不是三个图象属性。将该属性作为Forms.ImageList来声明,则NET和VS.NET IDE会为你处理大量的工作。你不需要通过编写代码来检测ImageList,属性窗口会将它显示出来。使用ImageList的另一个好处是它排除了用代码处理用户提供图象大小的可能性。当用户以不同的大小加载它时,ImageList代表的是一个单一大小和比例的图象。

    图象的大小决定了ImageButton的大小;该控件没有AutoSize属性。假如用户试图通过拖动控件的边框或通过属性窗口来改变它的大小,则ImageButton会立即重新设置为图象的大小。你可以通过覆盖OnSizeChanged过程来得到该行为,你还可以用一个只读版本将Control类的非覆盖Size属性隐藏起来。这给IDE带来了一个问题,因为他要序列化Size属性,试着将它设置到用户窗体的"Designer generated code"区域。添加<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>属性以避免用户在设计时读取它的属性序列化时,它提供一个更友好的工具给用户。

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:掌握ADO.NET的十个热门技巧
    下一篇:在VB.NET中调试存储过程
  • 相关文章