【问题标题】:send data from form 1 to form 2将数据从表格 1 发送到表格 2
【发布时间】:2017-08-04 00:49:49
【问题描述】:

我做了两个变量:

Public a as Integer
Public b as Integer

我有一个文本字段,可以在其中插入 2 个值,如下所示:“1 - 10” 所以我拆分值并将它们保存在这 2 个变量 a 和 b 中。

但我需要这 2 个不同形式的值,但我得到的只是 0。

我还在form2中创建了Dim c as form1 = new form1

有什么问题?

【问题讨论】:

  • Dim c as form1 = new form1 如关键字所暗示的那样创建一个 new 实例。它不会是可能显示的相同表单实例
  • 你的意思是像这样的 c.a 和 c.b ?? @Plutonix
  • 您问whats the problem 问题是您创建了一个 new form1 实例,而这些变量在新表单实例中可能为 0 .创建新表单后,如果您执行c.Show,您将看到表单显示的新副本
  • 哦,是的,好的,那么我怎样才能将数据从 form1 获取到 form 2? @Plutonix
  • 这已经被问了数千次了。在 Google 中输入您的标题,可能在搜索框中添加“VB”(超过 6000 个帖子),然后进行常见的普通研究以确定哪种方法最适合您的情况。请阅读How to Ask 并采取tour

标签: database vb.net forms variables split


【解决方案1】:

根据 Form1 和 Form2 之间的关系,可以使用这种通信方式(这是针对父子关系的):

表格2:

Public ParentFrm as Form1
Public a as Int16

Form 1 - 在它的运行实例中

Public b as Int16
Dim NewInstanceOfForm2 as New Form2
NewInstanceOfForm2.ParentFrm = Me    ' this is to ensure you can talk back to correct instance of parent form
NewInstanceOfForm2.a = 12345
NewInstanceOfForm2.BackColor = colors.Pink
NewInstanceOfForm2.TextBox1.Text = "Hello World!!!"

由于我们在Form2中设置了ParentFrm,所以您可以通过相同的方式返回并在Form1中进行设置:

ParentFrm.b = 789
ParentFrm.TextBox3 = "Hi there!!!"
ParentFrm.UpdateForm1FromDatabasePublicFunction()

兄弟姐妹可以通过共同的父母进行交流。但在所有情况下,您都需要了解表单的实例。请记住,您只能与表单的对象(TextBox、Button、DataGridView...)和 Public 变量进行通信。

【讨论】:

  • 这是个好主意!如果我需要多个打开的表单来与原始父母交流,我可能会使用这样的东西。
【解决方案2】:

您可以创建一个模块并在那里将变量定义为 puclic,这样就可以始终从应用程序的任何位置访问它们。

右击解决方案,添加新模块

然后在那个模块里面添加

公开 a, b 为整数

要拆分文本框输入并将它们存储在这些变量中,请使用

Dim s as String
Dim sp() as String
s = TextBox1.Text
sp = s.Split("-")

这将值分别存储在 sp(0) 和 sp(1) 上用“-”分隔的文本框中。

然后您可以将它们存储到您的公共变量中。

a = sp(0)
b = sp(1)

然后从您需要的任何形式调用。

【讨论】:

    【解决方案3】:

    好吧,我不确定你到底想要什么,但这里有一些建议:

    如果你的 form1 包含两个像这样的变量:

    Public a As Integer = 0
    Public b As Integer = 0
    

    并且您想从另一个表单中检索其中一个变量的值,比如说从 Form2 中,那么您需要做的就是:

    (将此代码放入第二个表单(例如 Form2)的函数或事件中):

    dim current_a As Integer = 0
    current_a = Form1.a
    
    dim current_b As Integer = 0
    current_b = Form1.b
    

    如果您在文本框中输入文本(例如:“1 - 10”),但想要获取两个值(在本例中为 1 和 10),您只需通过例如创建一个循环,以搜索这些值,如下所示:

    dim textbox_str As String = ""
    textbox_str = TextBox1.Text
    

    (在本例中,TextBox1.Text 将包含“1 - 10”)

    dim final_str1 As String = ""
    dim final_str2 As String = ""
    
    for each s_ As String In textbox_str
          If Not s_ = " " Then
              final_str1 = final_str1 & s_
          Else
              Exit For
          End If
    Next
    

    (在此之后,final_str1 将包含“1”) (现在通过执行以下操作提取第二个数字:)

    final_str2 = textbox_str.Replace(final_str1 & " - ", "")
    

    (现在,final_str2 将包含“10”) (因此您将从该文本中提取两个数字)

    正如我所说,我不完全知道您想要什么,但希望这对您有所帮助,如果您正在寻找,请告诉我!

    【讨论】:

    • 请使用刻度线或缩进将您的代码格式化为代码
    猜你喜欢
    • 2023-03-23
    • 2023-03-05
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2019-09-14
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多