Sending a textbox string from one form to a listbox in another form
我在下面上传了我的代码。我面临的问题是试图将表单2中的textbox 1&textbox 2中的文本放入表单1中的列表框中。当用户打开第二个表单时,他们应将文本放入文本框中,单击按钮时,应关闭表单2并将文本插入表单1的列表框中。
我尝试过很多事情,但似乎做不到。我对C编码也很陌生,刚开始使用Windows窗体,因此非常感谢您的帮助。
下表1代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ToDoList { public partial class Form1 : Form { List<string> _items = new List<string>(); public Form1() { InitializeComponent(); Form2 form2 = new Form2(); _items.Add("TITLE\t\t\tDESCRIPTION\t\t\t\t\t\tPRIORITY\tDUE DATE"); listBox1.DataSource = _items; } private void filesToolStripMenuItem_Click(object sender, EventArgs e) { } private void openToolStripMenuItem_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } public void listView1_SelectedIndexChanged(object sender, EventArgs e) { } public void button2_Click(object sender, EventArgs e) { } public void listBox1_SelectedIndexChanged(object sender, EventArgs e) { } public void listView1_SelectedIndexChanged_1(object sender, EventArgs e) { } private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e) { } } } |
下表2代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ToDoList { public partial class Form2 : Form { List<string> _items = new List<string>(); public Form2() { InitializeComponent(); } public void button2_Click(object sender, EventArgs e, string tbtext) { //Form1 form1 = new Form1(); //form1.listBox1.Items.Add(tbtext); Form1 form1 = new Form1(); _items.Add(textBox1.Text); _items.Add(textBox2.Text); _items.Add(comboBox1.Text); form1.listBox1.DataSource = null; form1.listBox1.DataSource = _items; } public void button1_Click(object sender, EventArgs e) { this.Close(); } public void textBox1_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { //IF THE USER DOES NOT ENTER items IN THE SPACES THESE IF STATEMENTS BRING A MESSAGEBOX if (string.IsNullOrWhiteSpace(this.textBox2.Text) && string.IsNullOrWhiteSpace(this.textBox1.Text)) { MessageBox.Show("Please Fill The Entries"); } else { if (string.IsNullOrWhiteSpace(this.textBox1.Text)) { MessageBox.Show("Please Enter A Task Name"); } if (string.IsNullOrWhiteSpace(this.textBox2.Text)) { MessageBox.Show("Please Enter A Description"); } } } public void textBox1_TextChanged_1(object sender, EventArgs e) { } public void textBox2_TextChanged(object sender, EventArgs e) { } public void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { } } } |
你的总体想法是正确的,但你必须理解的是马克在评论中所说的。在
1
2
3
4
5 Form1 (open Form2)
|
+-> Form2 (open and save to Form1)
|
+-> Form1 (contains saved data but you never see it)
原来的
1 2 | public TextBox textBox1; public TextBox textBox2; |
然后您可以像这样从中检索数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public void SomeMethodInForm1() { Form2 form2 = new Form2(); // Show form2 as a modal dialog and determine if DialogResult = OK. if (form2.ShowDialog(this) == DialogResult.OK) { // Read the contents of form2's TextBox. this._items.Add(form2.textBox1.Text); this._items.Add(form2.textBox2.Text); this.listBox1.DataSource = null; this.listBox1.DataSource = _items; } form2.Dispose(); } |