РЕДАКТИРОВАТЬ : При написании new Form2()
ваш код в Class1
создает новый экземпляр Form2
.
Этот экземпляр не имеет ничего общего с другим экземпляром, созданным в Form1
(также с помощью записи new Form2()
), который фактически видим.
Вам нужно указать Class1
существующий экземпляр Form2
, возможно, используя статическое свойство (как описано ниже).
Pre-Edit
Чтобы добавить текст в текстовое поле, вы должны вызвать метод AppendText
.
Чтобы сделать это вне Form2
, вы должны создать public
метод для Form2
, который вызывает AppendText
.
Например:
partial class Form2 : Form {
...
public void AppendMyText(string text) {
myTextbox.AppendText(text);
}
...
}
Чтобы вызвать этот метод в Class1
, вам потребуется ссылка на объект Form2
.
Если у вас есть только один Form2
за раз, вы можете создать статическое свойство, например так:
partial class Form2 : Form {
static Form2 instance;
public static Form2 Instance { get { return instance; } }
protected override void OnShown(EventArgs e) {
base.OnShown(e);
instance = this;
}
protected override void OnClosed(EventArgs e) {
base.OnClosed(e);
instance = null;
}
В Class1
(или в любом другом месте) вы можете написать
if (Form2.Instance != null)
Form2.Instance.AppendMyText(someString);
Обратите внимание, что вам нужно сделать это в потоке пользовательского интерфейса; если вы работаете в фоновом потоке, вы можете позвонить BeginInvoke
.