vb.net重写控件,winform重写控件

vb.net自定义控件问题

首先,你已经完成的步骤是:

专注于为中小企业提供成都网站设计、网站制作、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业右玉免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

1.新建一个用户控件[注意,用户控件(UserControl)不是自定义控件(CustomControl)]

2.给用户控件起个名字(我在此处起名叫 RadioList)

3.在用户控件上画一个 GroupBox,命名为 RadioGroup,

并将其 Dock 属性设置为 Fill

然后,你需要做的是动态增减控件。

如果你以前用过 VB 6,你可能会想到控件数组,

但在此处,你可以直接增删控件。

具体实现如下:

4.在 GroupBox 里画一个 FlowLayoutPanel,命名为 RadioPanel,

将其 AutoScroll 属性设置为 True,即自动显示滚动条,

并设置其 FlowDirection 属性(例如设置为 TopDown)

这样就省去了手动调整 RadioButton 位置的麻烦

5.实现选项的动态增减(以下只是我的思路,你可以发挥一下)

(十分简洁,注释除外):

''' summary

''' 创建一个新的 RadioButton。

''' /summary

Private Function CreateRadio() As RadioButton

Dim NewRadio As New RadioButton

components.Add(NewRadio)

'components 字段由控件设计器自动创建,

'此代码目的是使控件在销毁(Dispose)时能自动销毁 RadioButton

'详情参见 RadioList.Designer.vb

NewRadio.Parent = RadioPanel

'设置容器

AddHandler NewRadio.CheckedChanged, AddressOf RadioButtons_CheckedChanged

'设置事件处理程序

Return NewRadio

End Function

''' summary

''' 移除已存在的 RadioButton。

''' /summary

Private Sub RemoveRadio(ByVal dest As RadioButton)

components.Remove(dest)

dest.Dispose()

End Sub

'无中生有的 RadioButton 的事件处理程序

Private Sub RadioButtons_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

'在此处设置选中项的属性,通过 sender 来确定不同的 OptionButton

'你可以通过将 OptionButton 放在一个列表,

'如 List(Of OptionButton) 中来像数组一样维护选项的次序

'注意,此处需要判断 sender 的 Checked 属性是否为 True

'因为 Changed 是“改变”,而不是“选中”

'例如:

If DirectCast(sender, RadioButton).Checked Then

SelectedIndex = ...

End If

End Sub

如何在 vb.net 为动态生成的控件添加事件并传递数据

'把图片的声明放在外面,类里面过程外面,而且要用As,不然等会儿没法用

Dim myPicture As New System.Windows.Forms.PictureBox()

'动态生成的控件,加一行

Private Sub UserControl1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Me.Panel3.Controls.Add(myPicture)

myPicture.Size =New System.Drawing.Size(115, 160)

myPicture.TabStop =False

myPicture.Name ="p"

myPicture.Cursor = Cursors.Hand

AddHandler myPicture.Click, AddressOf mypic_Click '添加事件

AddHandler returnid, AddressOf idReturned '绑定事件和过程

End Sub

'再来个事件,放在声明的地方,就是类里面、过程外面

Private Event returnid(ByVal id As String) '这个事件可以传递值哦~

'普通的单击事件

Private Sub mypic_Click()

RaiseEvent returnid(myPicture.Name)

End Sub

'会传值的事件过程

Private Sub idReturned(ByVal id As String)

Dim bookInfo As New BookInfo

bookInfo.Show()

Me.Parent.Enabled = False

'用id变量做点什么吧

End Sub

如果要改事件的签名(参数一类的)的话,得重写控件。你可以这样自己弄一个事件。

vb.net 如何重绘Label控件?

新建一个Winform,在和Form1平行的位置粘贴如下代码

Public Class MyLabel Inherits Label Protected Overrides Sub OnPaint(e As PaintEventArgs) e.Graphics.DrawEllipse(New Pen(Color.Red), New Rectangle(2, 2, 10, 10)) MyBase.OnPaint(e) End Sub End Class

运行,停掉,在工具箱找到MyLabel,拖动就可以看到效果。这只是最基本的重写,要模仿QQ还需要其他技术以及美工。


标题名称:vb.net重写控件,winform重写控件
文章出自:http://scyanting.com/article/hcohje.html