2012-11-02 66 views
1

我已經實現了自定義DataGridViewColumn,DataGridViewCellDataGridViewEditingControl類,如MSDN Sample中所示。帶彈出編輯器的自定義DataGridView控件

我遇到的問題是,雖然MSDN示例中的DateTimePicker能夠將其日曆選取器彈出,並使其出現在下面的行的頂部,並與它相鄰的單元格;我的控制被困在由DGV單元的大小定義的空間內。我的控制由一個文本框和一個自動完成建議列表組成;所以我需要一種方法來讓列表出現,而不會使行成爲正常高度的幾倍。

因爲我拿了MSDN的例子,只是改爲DateTimePicker替換爲MyControl和其他相關更改的擴展我假設魔法發生在基類DateTimePicker類中;但不知道我需要改變什麼,以使其表現相同。

回答

3

您實現的DataGridViewEditingControl大小已移至單元格區域,並在單元格進入編輯模式時變爲可見。除了編輯控件外,您還需要一個「彈出控件」,您可以在編輯控件變爲活動狀態時創建該控件,並在非活動狀態時將其銷燬。

這裏有一個簡單的WinForms彈出控制例如:http://www.codeproject.com/Articles/17502/Simple-Popup-Control

但是,如果你想要的是自動完成的單元格,你可以得到免費使用股票DataGridViewTextBoxColumn,或DataGridViewComboBoxColumn

http://bytes.com/topic/c-sharp/answers/442061-autocompletestringcollection-text-box-datagridview-2-0-a

+0

我相信當初之所以創建自定義的控制(對經常使用形式)包括標準的自動完成功能可能不夠好。我不記得是否性能或功能是限制。當潛在值列表包含數千個元素並且可以匹配子字符串而不僅僅是從頭開始時,我需要執行得很好的東西。例如「Jo」的用戶輸入應該提出「Smith,John」作爲可能的值。 –

+0

@Tergiver如果你有時間請檢查我的問題http://stackoverflow.com/questions/23352137/datagridview-editing-control-expand-individually – eomeroff

相關問題