4

我有一个表格,可以提取数据、处理数字、做事。它完美地工作。

问题是代码是我一次只能访问一个市场,我希望能够访问多个市场。

假设我可以复制当前的表格 x 4,所以在我登录后,我可以访问 4 个市场,而不是 1 个。但是代码有点密集,而且我会坚持使用我硬连线的许多表格,而不是具有复制初始形式的灵活性,然后进入另一个市场。

实现这一点的最简单和最快的方法是使用一些代码来“弹出”现有表单的克隆,如果这样的话是可能的。

4

3 回答 3

3

如果我了解您所追求的,您想要这样的东西(第一部分与“迈克尔的”答案非常相似):

在表格中:

Public MarketCOde As String        ' whatever it is.

Public Sub New(mktCode As String)
   ' leave this line alone
   InitializeComponent

   MarketCOde = mktCode
End sub

现在,表单中的代码需要知道它在哪个市场工作的任何地方,它都可以引用MarketCode.

要创建用于新市场的表单:

 Dim frmAsia As New FORMNAME("ASIA")

由于表单需要一个市场代码,我们在创建表单时传递它。我们不是克隆表格,而是创建一个表格instance以适应不同但特定的市场。现在,请继续阅读,因为这是个坏消息:

如果所有代码都嵌入到表单中,则必须将其重构为引用 MarketCode,而不是现在可能存在的硬编码引用。接下来,您的应用程序需要一种新的启动方式,因为主窗体不会从 VB 获取关键的 MktCode arg。

最好的办法是添加一个市场选择器表单,并将其作为项目属性中的启动表单。添加按钮以创建您需要的每个新市场形式:

' this is a new button on a new form to make Market Form instances.
Sub button1_click......

  ' USE THE ACTUAL FormName from your code!
  Dim frmCentral as New FORMNAME("CENTRAL")   
  frmCentral.Show

 End Sub

' each button makes a new market form,
Sub button2_click......                     ' NOTE: Btn 2!

  ' the FormName from your code
  Dim frmAsia as New FORMNAME("ASIA")   
  frmAsia.Show

 End Sub

一键一表单实例名一市场

这也是启动第一个的启动形式。请务必在项目属性中将其设置为启动表单。

于 2013-10-09T00:55:38.297 回答
2

您可以在 MarketForm 上创建可以在外部设置的属性,以便每个实例与特定市场相关。我使用过 MarketName,但您必须弄清楚在您的情况下什么是有意义的。

在 MarketForm 的代码中创建类似这样的内容(您需要修改现有代码以使用它,而不是当前选择市场)

Public Property MarketName As String

使用面向对象的编程很容易创建任何对象的不同实例(在这种情况下为 Form)。

Dim myMarketForm1 As New MarketForm
myMarketForm1.MarketName = "Eastern"
myMarketForm1.Show()

Dim myMarketForm2 As New MarketForm
myMarketForm2.MarketName = "Central"
myMarketForm2.Show()
`... and so on
于 2013-10-08T17:22:06.447 回答
0

我怀疑你可能正在寻找的是这个......

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim frm As New Form1
    frm.Show()
End Sub

在这个例子中,当Button1被点击时,它会创建一个副本Form1并显示它。可以多次单击该按钮以生成Form1. 按钮甚至可以放在Form1自身上。

于 2013-10-08T17:20:39.563 回答