将以一种形式输入的数据显示为另一种形式

时间:2013-02-27 06:53:07

标签: c# .net winforms listbox

我想要另一个表单将一个表单的列表框中的选定项目显示到另一个表单的富文本框中,该表单在按钮单击时打开。我在表单1中使用以下代码段在消息框中显示内容,但现在我想要另一种形式。需要帮助......

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace cities
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {



            StringBuilder message = new StringBuilder();

            foreach (object selectedItem in listBox1.SelectedItems)
            {
               message.Append(selectedItem.ToString() + Environment.NewLine);
            }
            MessageBox.Show("You selected: \n" +message.ToString());         


        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

    }
}

5 个答案:

答案 0 :(得分:3)

我使用以下代码来实现我想要的。它做得很好! :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace cities
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {



            StringBuilder message = new StringBuilder();


            foreach (object selectedItem in listBox1.SelectedItems)
            {
               message.Append(selectedItem.ToString() + Environment.NewLine);
            }
            MessageBox.Show("Your Selected Cities :\n" + message.ToString() + "\n");

            Form2 childForm = new Form2();
            childForm.Controls["richTextBox1"].Text = message.ToString();
            childForm.Show();
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

    }
}

答案 1 :(得分:1)

从First开始,只需调用第二个表格

Form2 ob = new Form2(message);
ob.show();

这是设置Messge的第二种形式

  public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            public Form2(String message)
            {
                InitializeComponent();
                richTextBox1.Text = message;
            }

            private void Form2_Load(object sender, EventArgs e)
            {

            }
        }

答案 2 :(得分:0)

在form1中创建一个公共属性,它在get中返回一个字符串,使用与循环和字符串构建器相同的逻辑组成字符串。

当你打开form2时,调用一个form2的方法,它接受一个字符串,比如SetMessage,并将form1.Message传递给你创建的那个方法。

这是一种在不使表单依赖于内部控件的情况下获得所需内容的方法,因此只要您只编辑几个方法/属性,它就不会中断。

答案 3 :(得分:0)

在第二个form中创建一个方法:

public void SetRichTextboxText(string text)
{
     richTextBox1.Text = text;
}

然后在您的第一个表单中添加以下代码:

private void button1_Click(object sender, EventArgs e)
 {
     StringBuilder message = new StringBuilder();

     foreach (object selectedItem in listBox1.SelectedItems)
     {
          message.Append(selectedItem.ToString() + Environment.NewLine);
     }

     var form = new Form2();
     form.SetRichTextboxText(message.ToString());
     form.Show(this);
}

答案 4 :(得分:0)

在表单2中,您必须为richtextbox添加消息的属性:

private string _message = string.Empty;
    public string message
    {
        get { return _message; }
        set { _message = value; }
    }

表格1:

  private void button1_Click(object sender, EventArgs e)
    {
        StringBuilder message = new StringBuilder();

        foreach (object selectedItem in listBox1.SelectedItems)
        {
           message.Append(selectedItem.ToString() + Environment.NewLine);
        }
        Form2 objForm2 = new Form2();
        objForm2.message = message.ToString();
        objForm2.ShowDialog();

}

在表单2页面加载中:

    private void Form2_Load(object sender, EventArgs e)
    {
        richTextBox1.Text = message;
    }