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

最初から、このように2番目のフォームを呼び出すだけです

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

これは、メッセージを設定する 2 番目のフォームです。

  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

Form 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;
    }
于 2013-02-27T09:01:23.733 に答える
0

Create a public property in form1 which returns a string in the get, compose the string with the same logic you are using for the loop and string builder.

When you open form2 call a method of form2 which accepts a string, like SetMessage and pass form1.Message to that method you have created.

This is a way to get what you need without making the forms to depend on their internal controls, so it does not break if you replace controls as long as you edit only a couple of methods/properties.

于 2013-02-27T07:00:34.663 に答える
0

In the second form create a method:

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

then in your first form add this code:

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 に答える