在 C# Windows Forms 開發中,常見的情況是在按鈕點擊事件裡直接設定 pictureBox1.ImageLocation 即可正常顯示圖片。但若在另一個類別中嘗試透過 new Form1() 建立新表單實例來設定圖片,卻發現完全沒有反應。這是因為 new Form1() 建立的是一個全新的、未顯示的表單實例,而非目前正在執行的主表單。
Form1 image = new Form1();
image.pictureBox1.ImageLocation = codeUrl; // 操作的是新實例,非當前顯示的表單
應使用 Application.OpenForms 取得目前正在運行的表單實例:
Form1 mainForm = Application.OpenForms["Form1"] as Form1;
if (mainForm != null)
{
mainForm.pictureBox1.ImageLocation = codeUrl;
}
更好的架構是將圖片設定邏輯封裝在 Form1 的公用方法中,或透過事件/委派通知主表單更新 UI,避免在其他類別直接操作 UI 控制項,提升程式碼可維護性。