Текст C # не отображается на другой форме после двойного щелчка по элементу в списке

я делаю winform, которая состоит из списка (listbox10) с некоторыми элементами на нем. Когда я дважды щелкаю элемент, он показывает другую форму (Form3), которая состоит из текстового поля (textbox1) и текстового поля 's текст - это элемент, который я выбрал. Ниже моя кодировка.

Form3 msgForm3;
private void listBox10_DoubleClick(object sender, EventArgs e)
{

    msgForm3 = new Form3();
    textBox1.Text = listBox10.SelectedItem.ToString();
    msgForm3.Show();
}

Но почему-то я неНе знаю почему, текстовое поле всегда пусто. Что-то не так с моим кодированием?

 Coolguy09 окт. 2012 г., 10:25
Любой пример в настройках (текст строки), тире?
 Nasreddine09 окт. 2012 г., 10:17
Вы не получаете доступ к текстовому полю в форме 3.

Ответы на вопрос(3)

Вот как вы можете получить доступ к члену другой формы.

msgForm3 = new Form3();
msgForm3.textBox1.Text = listBox10.SelectedItem.ToString();
msgForm3.Show();

РЕДАКТИРОВАТЬ:

ОтForm3.Designer.cs файл просто изменить уровень защиты отprivate кpublic

замещать

private System.Windows.Forms.TextBox textBox1;

к

public System.Windows.Forms.TextBox textBox1;
 Saurabh R S09 окт. 2012 г., 10:25
изменить уровень защиты отprivate вpublic в Form2.Designer.cs
 Vishal Suthar09 окт. 2012 г., 10:29
Отредактировал мой ответ .. @ Coolguy
 Coolguy09 окт. 2012 г., 10:21
Вишал Сутар, ямы пробовали, но появляется сообщение о том, что текстовое поле недоступно из-за уровня защиты. Что это означает?
Решение Вопроса

textBox1 Вы обращаетесь не наmsgForm3, чтобы получить доступ кmsgForm3 использовать (как уже упоминалось в других ответах)

 

но так как все элементы управления формойprivate по умолчанию вы можете изменить уровень защиты внутриForm3.Designer.cs вpublic (или жеinternal ):

public System.Windows.Forms.TextBox textBox1;

или добавьте текст, который должен войти вtextbox1 в качестве параметра в конструкторе Form3:

public Form3(string text)
{
    InitializeComponent();
    this.textBox1.Text = text;
}

и когда вы создаете экземпляр использования Form3

msgForm3 = new Form3(listBox10.SelectedItem.ToString());
 Coolguy09 окт. 2012 г., 10:32
Да. Я'Я пробовал это, он работает очень хорошо! Спасибо!
 Nasreddine09 окт. 2012 г., 10:43
Используйте тот же метод: либо передайте значения, которые вы хотите в качестве параметров, вашему конструктору, либо измените уровень защиты элементов управления, к которым вы хотите получить доступ из других форм.
 dash09 окт. 2012 г., 10:38
+1 это тоже мой любимый маршрут, хотя я бы добавил и свойство в форму.
 Coolguy09 окт. 2012 г., 10:40
Другое дело, что если этоэто не просто текстовое полеs текст должен измениться, метка также должна измениться. как?
 Nasreddine09 окт. 2012 г., 10:34
Вы'Приветствую, крутой парень :)

что textbox1 является элементом управления внутри msgForm3, тогда правильный синтаксис должен быть

msgForm3.textBox1.Text = listBox10.SelectedItem.ToString(); 

Для этого необходимо изменить свойство Modifiers с Private на Public для textBox1 с помощью окна свойства Form Designer.

Я неЯ рекомендовал это изменение. Лучше передать новое значение внутри конструктора msgForm3 следующим образом

msgForm3 = new Form3(listBox10.SelectedItem.ToString());  
msgForm3.Show();  

а затем в конструктор msgForm3 добавить

public Form3(string initialValue)  
{  
    InitializeComponent();  
    this.textBox1.Text = initialValue;  
}  

или вы можете добавить публичный метод в свой класс Form3, как это

public void InitText (string initialValue) {this.textBox1.Text = initialValue;}

и звоните таким образом

msgForm3 = new Form3();  
msgForm3.InitText(listBox10.SelectedItem.ToString());
msgForm3.Show();  
 Coolguy09 окт. 2012 г., 10:21
Стив, ямы пробовали, но появляется сообщение о том, что текстовое поле недоступно из-за уровня защиты. Что это означает?

Ваш ответ на вопрос