【问题标题】:VB.NET Windows Forms Variables PassingVB.NET Windows 窗体变量传递
【发布时间】:2015-02-17 06:22:36
【问题描述】:

我有一个带有 Combobox 和两个 datepickers 对象的 windows 窗体。我希望用户选择值后将变量值传递给另一个窗体。

我所看到的只是如何在类的实例上使用 showDialog 方法执行此操作,但这对我不起作用,因为用户必须从 Combobox 中选择一个用户并选择日期范围并单击搜索按钮。

由于我的时间已接近截止日期,我们将不胜感激。

谢谢。

【问题讨论】:

  • 您可以使用委托来实现您想要的,在组合框中的选择更改触发委托以您想要将值传递给的形式处理,对于日期选择器,值也是如此改变了。
  • 谢谢。您能否展示一个简单的委托用例或指向教程。
  • 一种快速的方法是使用类或模块的公共变量或属性。有些人认为这是不礼貌的,但如果你记录你正在做的事情,实际上是可以的。
  • 先让我弄清楚情况。所以你有2个窗口形式。第一个窗口窗体包含组合框和日期选择器。所以如果用户选择一个范围,结果将显示在第二个窗口窗体中。这就是您所说的在另一个表单上传递值的意思,对吗?
  • @kim-jaca ,是的,这正是我想要做的。

标签: vb.net winforms


【解决方案1】:

你可以这样做

1- 创建公共事件,单例方法

Public Class EventClass
    Private Sub EventClass()
    End Sub

    Public Shared Sub Invoke(sender as object, value as object)
        RaiseEvent OnValueChange(sender,value) ' be sure OnValueChange is not nothing first
    End Sub
    Public Shared Event OnValueChange(sender as object,value as object)
End Class

2- 以包含组合框和日期选择器的形式引发事件

  • 处理所选索引上的组合发生更改的事件

在组合事件中将事件提升为

EventClass.Invoke(ComboBox1,ComboBox1.SelectedValue)

在 DateTimePicker 的情况下使用

EventClass.Invoke(DateTimePicker1,DateTimePicker.Date)

3- 以您想要将值传递给的形式

public sub EventClass_OnValueChange(sender as object, value as object) handles EventClass.OnValueChange
 ' do your code here but be sure that this form was created before the form that contains the invoke or it will not be fired
end sub

希望对你有帮助

【讨论】:

  • Hadi,这无济于事,因为使用事件的表单是稍后创建的,而不是在包含调用的表单之前创建的。感谢您的支持,但这与使用 showDialog 方法一样好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多