2014-10-11 73 views
0

我在訪問和修改另一個類的列表框控件時遇到了一些問題。從另一個類訪問和修改表單列表框

這裏的MainForm的,它保存列表框:

public partial class MainForm : Form 
{ 
    private static MainForm mainForm = new MainForm(); 

    internal static MainForm init() 
    { 
     return MainForm.mainForm; 
    } 

    public MainForm() 
    { 
     InitializeComponent(); 
    } 
} 

而這裏的,我使用試圖修改列表框(該項目從事件的附加)第二類:

public class Utils 
{ 
    void ItemsReceived(object sender, DataReceivedEventArgs<ListboxItems> e) 
    { 
     MainForm.init().listBox1.Items.Add("test"); 
    } 
} 

使用此代碼設置,沒有任何內容添加到列表框中。有任何想法嗎?或者甚至有更好的方法來解決這個問題?

+0

[從不同形式訪問控件]的可能重複(http://stackoverflow.com/questions/14296690/accessing-controls-from-different-forms) – Plutonix 2014-10-11 21:53:06

回答

0

通常,Visual Studio生成一個Program.cs文件下面的代碼:

Application.Run(new MainForm()); 

如果該行仍然存在,你的靜態mainForm變量將舉行的MainForm一個不同實例要比一個運行應用程序時可見。如果我是正確的,改變線Program.cs到:

Application.Run(MainForm.init()); 

在一個側面說明,在使用單(反)模式,考慮改變該方法的名稱GetInstance()因爲init()似乎初始化的東西。