3

我想要另一个表单来显示从一个表单的列表框中选择的项目到另一个表单的富文本框,该表单在按钮单击时打开。我在表格 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)
        {
        }

    }
}
4

5 回答 5

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)
        {
        }

    }
}
于 2013-02-27T08:51:15.187 回答
1

从第一个来只需像这样调用第二个形式

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

这是设置消息的第二种形式

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

            private void Form2_Load(object sender, EventArgs e)
            {

            }
        }
于 2013-02-27T07:03:29.057 回答
0

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

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

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

于 2013-02-27T07:00:34.663 回答
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);
}
于 2013-02-27T07:00:57.637 回答
0

在表单 2 中,您必须为富文本框添加消息的属性:

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;
    }
于 2013-02-27T09:01:23.733 回答