2015-12-14 35 views
2

我在winforms c#中遇到了ComboBox問題。在主窗口的組合框工作正常,但是在主窗口的面板上打開的形式的組合框被破壞了。奇怪的事情開始發生......我無法點擊它來鍵入。我只能打開列表,選擇一個然後鍵入。另外我不能將光標定位在文本中間,因爲它會突出顯示整個文本。我張貼代碼我在面板上打開形式:c#combobox在面板中打開

public void otworzOkno(Form _form) 
{ 
    if (Application.OpenForms[_form.Name] != null) 
    { 
     Application.OpenForms[_form.Name].WindowState = FormWindowState.Normal; 
     Application.OpenForms[_form.Name].BringToFront(); 
    } 
    else 
    { 
     _form.TopLevel = false; 
     _form.AutoScroll = true; 
     this.panel.Controls.Add(_form); 
     _form.Show(); 
     _form.BringToFront(); 
    }  
} 

視頻將說明問題:https://youtu.be/PrVxFWvhPyc

+0

「破碎「?這是什麼意思?你爲什麼使用Application.OpenForms(從來沒有見過這種方法,並且已經使用了Winforms)?你能解釋一下你想要什麼,你嘗試過什麼,你有什麼問題? (即明確的描述和/或錯誤信息;通過避免像「不起作用」或「被破壞」或類似的陳述)通過銘記給定的容器,您應該能夠沒有任何問題地訪問任何控件(即,如果在面板中包含控件,則容器將是該面板而不是主窗體)。 – varocarbas

+0

我得到主菜單和麪板的形式。當我點擊按鈕時,我在面板中打開新窗體。在面板中打開的表單在組合框中遇到了一些問題。我不能點擊它來寫一個文本。當我打開下拉列表並選擇exapmle'ac'的項目時,我無法點擊中間的'abc',因爲它突出顯示了整個文本。最大的問題是寫入它。我發現那是因爲窗體是在面板中打開的,當我打開它'正常'作爲單獨的形式,它工作正常。 – Methos

+0

讓我們一步一步來。 Winforms中的基本控件是形式,而不是面板。也就是說:首先你有一個表格,裏面可以有一個面板或1000或其他任何東西,但不是周圍的東西!每個表格基本上都是一個窗口。 – varocarbas

回答

0

如果沒有進一步的信息,有沒有什麼我們可以做,但我會盡我所能。
首先,要在表單中填寫表格,您必須使用MDI(https://msdn.microsoft.com/en-us/library/7aw8zc76(v=vs.110).aspx)。如果你不是,就在這裏停下來修復它...
其次,在一個MDI應用程序中,設置事件可能會變得混亂,特別是當你試圖讓一個外部形式的反饋成爲內部形式時...檢查那!
第三,爲了更好地理解發生了什麼事情,請嘗試訂閱諸如Focus的事件,並檢查還有誰在收聽...也許有人正在壓倒某個事件,但您並未意識到它...