2010-06-15 52 views
0

我需要在C#中的代碼段代碼來保存所選的行從DataGridView行後雙擊。保持一行datagridview被用戶選中

現在我正在顯示來自數據集的數據,選擇模式爲FullRowSelect。 任何方式來設置?

有兩種情況處理:

  1. 每次計時器滴答選定行經常去的DataGridView的第一行。
  2. 一旦點擊了一行,它就會被選中,但在計時器滴答後,選定的行將轉到第一個行。

感謝您的幫助!

一個新手程序員

回答

0

從數據集和選擇模式現在,我顯示的數據是FullRowSelect。任何方式來設置?

DataGridView.SelectionMode屬性將通過DataGridViewSelectionMode枚舉爲您完成。

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 

至於你的問題的其餘部分,我想進一步的細節是必需的。你以後有什麼樣的行爲?

編輯#1

按您的評論:

後,我連續一個新的形式打開點擊。問題是,每次啓用計時器時,都會調用populate_DatagridView方法,並且所選行位於第一行,而不是保持所選行的點擊。

一種解決方案可能是以下幾點:

private _dataGridViewRowSelectedIndex; 

private void dataGridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { 
    DataGridView dgv = (DataGridview)sender; 
    if (dgv.Rows.GetRowState(e.RowIndex) == DataGridViewElementStates.Selected) 
     _dataGridViewRowSelectedIndex = e.RowIndex; 

    // Open your form here... 

    // And when your form returns... 
    // Set the selected index like so 
    dgv.Rows[_dataGridViewRowSelectedIndex].Selected = true; 
} 

這是否幫助你呢?

+0

當我點擊一行後,打開一個新的表單。問題是,每次啓用計時器時,都會調用populate_DatagridView方法,並且所選行位於第一行,而不是保持所選行的點擊。 – user367509 2010-06-15 18:16:22

+0

感謝您的回答,但在閱讀了很多內容之後,我想我可以更好地解釋我的問題。我的問題是,除了實現數據之外,每次調用populate_datagridview方法時,都會選擇第一行數據網格,而不是保持選中當前行或點擊行。基本上,我需要的是將FirstDisplayedScrollingRowIndex更新爲當前行索引。 – user367509 2010-06-15 21:34:35

+0

這基本上是我的代碼示例,不是嗎?有什麼重大區別?你也許得到了我不知道的東西。如果是的話,感謝分享。 =) – 2010-06-16 00:14:18

1

你必須做,在功能timer_tick

private void timer3_Tick(object sender, EventArgs e) 
    { 
     int rowIndex; 

     if (dgvOrdini.Rows.Count == 0) //here I check if the dgv is empty 
      rowIndex = 0; 
     else 
     // I save the index of the current row in rowIndex 
     rowIndex = this.dgvOrdini.CurrentCell.RowIndex; 

     ....... 
     ....... 
     if (dgvOrdini.Rows.Count != 0) //Now if the dgv is not empty 
      //I set my rowIndex 
      dgvOrdini.CurrentCell = dgvOrdini.Rows[rowIndex].Cells[0];  
    } 

用這種方法選定行不會改變。

1

試試這個。 首先保存行的實際選擇

int index = -1 //set the index to negative (because if you have only 1 row in your grid, this is a zero index 
if (yourdatagridview.Rows.Count > 0) //if you have rows in datagrid 
{ 
index = yourdatagridview.SelectedRows[0].Index; //then save index into variable 
} 

現在你可以更新datagridview的索引...

更新您必須設置selecvted行後:

if (index != -1) //if index == -1 then you don't have rows in your datagrid 
{ 
yourdatagridview.Rows[index].Selected = true; 
} 

它的作品!

相關問題