2014-01-23 28 views
0

工具的ListView在C#中的設置位置: 的Visual Studio 2010旗艦版, 語言C#, MYSQL數據庫以下的DataGridView活動行的Winform

嗨,

我正在尋找這一段時間,但至今沒找不到合適的解決方案。

我有一個綁定DataGridView與5列,ProductID,ProductName,數量,價格和金額的窗體。正常數據輸入後用戶可以點擊按鈕將數據保存到Mysql數據庫,那裏沒有問題。

目前用戶手動輸入ProductID,之後執行Sql命令來獲取ProductName並將其設置爲DataGridView ProductName列。我需要一種方法,當它獲得焦點時在ProductID列下方顯示ListView,以便用戶可以從ListView中選擇產品(產品ID和產品名稱),並將其設置爲用戶當前正在使用的DataGridView的行。

當用戶點擊或獲得焦點時,是否可以在ProductID單元格下方顯示listview?

感謝

艾哈邁德

+0

參見[DataGridViewComboBoxColumn(http://msdn.microsoft.com/en-us/library/system.windows .forms.datagridviewcomboboxcolumn(v = vs.110).aspx) –

+0

@GrantWinney ListView的任何建議/鏈接? – Ahmed

+0

@ Ahmed你不能。 DataGridView不支持ListView列。你可以做的是手動創建並找到行所在的位置上的ListView控件。但是,您將不得不處理諸如滾動等情況。 – etaiso

回答

0

嘗試下面的代碼,我認爲這是一個良好的開端 - 但肯定需要改進。但請不要這樣,因爲我在上面的評論中提到過,您應該處理特殊情況,例如滾動甚至擴展網格,以便ListView不會隱藏DataGridView行。

在您DataGridView認購MouseMove事件和存儲鼠標位置:

private void dataGridView1_MouseMove(object sender, MouseEventArgs e) 
{ 
    mouseLoc = e.Location; 
} 

您可以設置mouseLoc作爲一個屬性。

private Point mouseLoc = new Point();

而且還訂閱CellMouseDown事件,與此代碼:

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    listView1.Location = new Point(mouseLoc.X, mouseLoc.Y + dataGridView1[e.ColumnIndex, e.RowIndex].Size.Height); 
    listView1.BringToFront(); 
    listView1.Refresh(); 
} 
+0

謝謝......我會盡快回復您。 – Ahmed