重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,你已经完成的步骤是:
成都创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、网站建设、网站制作、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。
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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CheckBox1.Checked = Not CheckBox1.Checked
CheckBox2.Checked = Not CheckBox2.Checked
CheckBox3.Checked = Not CheckBox1.Checked
End Sub
软糖来回答罗。
“调用事件”有歧义,你的意思是不是下面两种:
调用事件处理方法
直接调用对象名.方法名
'例如有这样一个按钮点击事件处理程序
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
秒表.Start()
End Sub
'调用它直接用
Button1_Click(me, new EventArgs())
引发事件
Button1.Click.Invoke(me, new EventArgs())
另外 RaiseEvent 也可以引发事件,但不能使用 RaiseEvent 来引发派生窗体的控件事件,只有自己定义的类的事件才能用它引发。
如满意,请采纳,谢谢。
与使用System.Windows.Forms命名空间中的控件的用法没有区别。
首先添加引用。
其次导入(Imports)命名空间。
接着就可以使用了:
1、要使用用户控件的实例成员,就先创建一个用户控件的实例,再通过实例名.实例成员名访问;
2、要使用用户控件的共享(Shared)成员,通过用户控件类名.共享成员名访问。
如果你问的是怎样创建自己的用户控件类:
1、继承类System.Windows.Forms.UserControl;
2、继承任何一个已经存在的控件类(只要这个控件类不是NotInheritable的就行)。
表示刚才亲自测试,建立以个Form,拖了一个Panel,在Panel里面放了3个RadioButton(默认Checked就是False),然后启动,发现第一个被选中了,
然后双击了一下它,跳到代码页面,在启动,第二个被选中,双击第二个和第三个,此时再代码一面出现了3个按钮的事件,在三个事件都设好断点,启动程序,发现3个都没有被选中了,而且也没执行任何一个事件。
在该按纽的单击事件编写代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
在VB6的时候,使用:Unload me
在VB.NET里使用:Me.Close()