這應該是非常簡單的,但我很努力地看到任何結果。爲什麼我無法與主程序中的表單對象進行交互?
我有以下形式的代碼:
//Form1.cs
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 NotepadRW
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected TextBox textReadInfo;
public void SetReadInfo(String str)
{
txtReadInfo.Text = str;
}
}
}
我也有下面的程序代碼:
//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace NotepadRW
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form1 = new Form1();
Application.Run(form1);
form1.SetReadInfo("Hi");
}
}
}
這導致以下形式:
爲什麼它不顯示我提供的字符串嗎?我沒有正確理解程序如何與Windows窗體一起工作嗎?當調用Form1的新實例時,Program.cs的Main()方法的執行是否停止?
注:我已經嘗試過使用文本框和富文本框。相同的結果。
加分: 我是否正確封裝了封裝?我正在修改文本框以便公開訪問(這將起作用),但我認爲這將是「正確」的方式。
是'txtReadInfo.Text = str'只是拼寫錯誤還是txtReadInfo定義的地方我們看不到? –
爲什麼不在'InitializeComponent'調用之後'this.SetReadInfo(「Hi」)''? – dcg
您正在* Application.Run之後分配該文本*。這會啓動GUI事件循環,直到主窗體關閉纔會退出。在表單構造函數和應用程序運行之間移動該行。 –