vb.net动态生成图片,net 生成图片

如何在 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 动态创建picturebox后如何用其image属性

这样了:

CType(Me.Controls("PictureBox11"), PictureBox).Image = My.Resources.image1

Find 返回数组,元素类型为Object。

Item() 可以把控件名作关键字,但也返回Object。这个方法是默认的,可以省略。

CType 转换引用类型。

大概如此,我是2008,没vb6那般的控件数组。

vb.net 如何让动态生成的90个Label 排列成 3列 30行?

需要一点,数学知识:画个图,容易理解:

如图分析:

第1行第1列控件Label1(0)的Left和Top;

Label1(0).Left = L

Label1(0).Top = T

Label1(0).Width = 宽

Label1(0).Height = 高

并设控件之间的行距,列举分别为:V,H

那么:

        第1列                                 第2列                                     第3列

第1行    Label1(0).Left = L               Label1(1).Left = L + 宽 + H          Label1(2).Left = L + 2 * (宽 + H)

   Label1(0).Top = T                Label1(1).Top = T                    Label1(2).Top = T

第2行    Label1(3).Left = L               Label1(4).Left = L + 宽 + H          Label1(5).Left = L + 2 * (宽 + H)

   Label1(3).Top = T + 高 + V       Label1(4).Top = T + 高 + V           Label1(5).Top = T + 高 + V

第3行    Label1(6).Left = L               Label1(7).Left = L + 宽 + H          Label1(8).Left = L + 2 * (宽 + H)

   Label1(6).Top = T + 2*(高 + V)   Label1(7).Top = T + 2*(高 + V)       Label1(8).Top = T + 2*(高 + V)

第4行    Label1(9).Left = L               Label1(10).Left = L + 宽 + H         Label1(11).Left = L + 2 * (宽 + H)

   Label1(9).Top = T + 3*(高 + V)   Label1(10).Top = T + 3*(高 + V)      Label1(11).Top = T + 3*(高 + V)

。。。。。。

所以:

下标为 i 的控件的 Left、Top属性为?:

确定其列号的方法:(i Mod 3) + 1,其Left属性为:Label1(i).Left = L + (i Mod 3) * (宽 + H)

确定其行号的方法:(i \ 3) + 1,其Top属性为:Label1(i).Top = T + (i \ 3) * (高 + V)

vb.net 动态生成的控件,事件也动态加,怎么做呢?

你需要的应该是反射,类似如下,我测试通过的:

Imports System.Reflection

Public Class Form1

Public Sub MMMToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MMMToolStripMenuItem.Click

MsgBox("menu click")

End Sub

'在按钮事件处理里面通过反射名称调用相应菜单事件

Public Sub CallEventMethod(sender As Object, e As EventArgs)

Dim b As Button = sender '获取点击的按钮

'拼接菜单事件名称

Dim MethodName As String = b.Name  "ToolStripMenuItem_Click"

Dim t As Type = Me.GetType

Dim m As MethodInfo = t.GetMethod(MethodName)

'反射方法

m.Invoke(Me, New Object() {Nothing, Nothing})

End Sub

'动态生成了按钮

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

Dim btn As New Button

btn.Location = New Point(100, 100)

btn.Name = "MMM" '关键

btn.Text = "MMM"

'注册事件

AddHandler btn.Click, AddressOf Me.CallEventMethod

Me.Controls.Add(btn) 

End Sub

End Class

vb.net动态添加控件,并且绑定了一些事件,这些事件只能对最新生成的控件做修改,之前生成的无法修改

比如说这样添加的计时器:

Dim Timer1 As New Timer

你要在合适的地方开始,比如窗体Load事件中,这样:

Timer1.Interval = 1000 '单位毫秒,1000毫秒=1秒

Timer1.Enabled = True '启用计时器

然后在代码窗口上方下拉列表里选择Timer1的Tick事件,自动添加代码:

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

End Sub

这是计时器触发的事件,每秒触发一次,在这里面输入循环判断是否有日程即可。提示:你可以用Now对象获取当前的日期和时间。


本文标题:vb.net动态生成图片,net 生成图片
本文地址:http://myzitong.com/article/hspgjj.html