有一个工程有很多的窗体,如Form1,Form2,Form3........,FormN
目的,利用 一个模块为每个窗体动态添加工具栏(每个窗体的工具栏按钮不同,从数据库中抓取)
部分代码如下:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
g_prog = Me.Name
Call ProgramDefault() '程式预设
End Sub
.............
End Class
Module FormSet
Public Sub ProgramDefault
..........
For l_i = 0 To UBound(l_barname)
l_text = Split(l_barname(l_i), "~")(0)
l_image = Split(l_barname(l_i), "~")(1) & ".png"
tsi = New ToolStripButton
With tsi
.Text = l_text
.Image = Main.ImageList.Images.Item(l_image)
........
End With
Dim tempForm As Form1= CType(Application.OpenForms("Form1"), Form1)
tempForm.ToolStrip.Items.Add(tsi)
next
END sub
............
EMD Module
代码中后面的部分就是设定tempForm = Form1,再去设定Form1中的toolstrip
请问有没有办法将tempForm定义成一个公用的窗体变量,实现以下功能:
dim tempForm AS new Form '这个定义方法已经试过了,不行
tempForm = g_prog 'g_prog是全局变量,记录窗体的名称,在每个窗体开启时取得 g_prog = me.name
tempForm.ToolStrip.Items.Add(tsi) '将窗体的工具栏显示出来
------解决思路----------------------
方法定义
sub setToolItems(f as form)
在这里为f添加工具栏栏目
..........
end sub
调用
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
setToolItems(sender)
End Sub
试试看
------解决思路----------------------
继承啊!继承!
做个基类窗体 ToolFormBase,上面有个 ToolStrip。
所有的 Form1,Form2,Form3........,FormN 去掉各自的 ToolStrip,改为从 ToolFormBase 继承。
'这样就没问题了'
Dim tempForm As ToolFormBase = CType(Application.OpenForms("Form1"), ToolFormBase)
tempForm.ToolStrip.Items.Add(tsi)