代码之家  ›  专栏  ›  技术社区  ›  Arunachalam

如何将值从一种形式传递到另一种形式?

  •  4
  • Arunachalam  · 技术社区  · 17 年前

    F1 F2 .使用后 一层楼 ,我现在已经打过电话了 F2.ShowDialog() .这个 也在屏幕上。既然两个表单都可见,我如何从中传递数据 一层楼 地上二层 ? 另外,一次 地上二层 (模态对话框)完成后,如何将数据返回到 ?

    10 回复  |  直到 11 年前
        1
  •  3
  •   LPL user462990    14 年前

    是否有人考虑过简单地将值传递给tag属性中的表单。

    Form newForm = new form();
    newForm.Tag = passValue;
    newform.showmodal();
    

    当显示newform时,load(或任何其他)例程可以使用标签中的数据

    public void load()
    {
      if (this.Tag.length > 0)
      {
         // do something with the data
      }
    }
    
        2
  •  2
  •   Anand Shah    17 年前

    Form f2 = new Form();
    f2.ShowDialog();
    

        3
  •  2
  •   Charles Caldwell    13 年前
    int x=10;
    Form1 f2 = new Form1(x);
    f2.ShowDialog();
    

    这是以传递值的人的形式写入的。要接收此值,必须以接收的形式创建新构造函数

    就这样

    public Form2(int x)
      {
            InitializeComponent();
            this.x = x;
     }
    

    在第一个表单中会注意到,当您从表单2中创建实例时,您有两个选择,其中一个允许您传递值

        4
  •  1
  •   Fredrik Mörk    17 年前

    在表格1中:

    private void ShowForm2()
    {
        string value = TheTextBox.Text;
        Form2 newForm = new Form2();
        newForm.TheValue = value;
        newForm.ShowDialog();
    }
    

    表格2:

    private string _theValue;
    public string TheValue 
    { 
        get
        {
            return _theValue;
        }
        set
        {
            _theValue = value; 
            // do something with _theValue so that it
            // appears in the UI
    
        }
    }
    

    这是一种非常简单的方法,对于更大的应用程序可能不是最好的(在这种情况下,您可能希望研究MVC模式或类似模式)。关键是你要按照以下顺序做事:

    1. 创建要创建的窗体的实例 显示
    2. 将数据传输到新表单
    3. 出示表格

    当您以模式显示表单时,它将阻止调用表单中的代码,直到新表单关闭,因此您不能在那里使用代码以简单的方式将信息传输到新表单(这是可能的,但不必要地复杂)。

        5
  •  0
  •   Mark Carpenter    17 年前

    如果您只想将数据推送到子对话框,请考虑向子对话框的构造函数添加参数,然后调用SudiDAudio()。不过,以另一种方式传递数据有点棘手。

        6
  •  0
  •   Karthik Karthik    17 年前

    让我重新提出这个问题 我有两张表格f1,f2。。。 表格f2=新表格(); f2。ShowDialog();

    //现在我需要将参数从f1窗口传递到f2(这是模态对话框),还需要将值从f2窗体返回到f1

    //现在我正在使用公共名称空间中的变量(对于f1和f2)

        7
  •  0
  •   Erich Kitzmueller    17 年前

    考虑使用MVC模式,即不是在窗体中有太多的数据,而是将它们传递到周围,使用保持这些东西的模型类。

        8
  •  0
  •   Jason Plank Maksim Kondratyuk    14 年前

    为您的信息使用定义的类型(类、结构…)并在Form1中声明一个变量

    struct myData
    {
        String str1;
        String str2;
    }
    
    Public Class Form1
    {
      Public myData dat;
    }
    

    (注意:类型不应该是公共的,这只是为了这个示例) 类型1。

    public Form2(Form1 frm1)
    {
        mFrm1 = frm1;
        InitializeComponent();
    }
    

    现在,当你打电话给form2时,把 正是Form1的例子 这就决定了:

    Form2 frm2 = new Form2(this);
    frm2.ShowDialog();
    

    现在,当执行到达Form2时,您可以访问Form1中的MyData:
    mFrm1。dat;

    这样,Form1和Form2的实例都将引用位于一个位置的数据。两个表单实例都可以进行更改/更新。

        9
  •  0
  •   Tushar Vengurlekar    13 年前

    在目标表单中,有这样定义的构造函数

    public partial class Destination: Form
    {
        string valueAccepted;
        public Destination(string _valuePassed)
        {
            InitializeComponent();
            this.valueAccepted= _valuePassed;
        }
    }
    

    在源代码表单中,调用如下表单

            Source sourceForm= new Source ("value Passed");
            sourceForm.ShowDialog();
    

    通过这种方式,“传递的值”从表单源传递到表单目标

        10
  •  -1
  •   Jason Plank Maksim Kondratyuk    14 年前

    有多种方法可以在两个表单之间传递数据 请检查这些链接,其中有示例视频可以执行此操作

    -FormToForm使用属性- http://windowsclient.net/learn/video.aspx?v=108089