2013-04-18 18 views
1

我想的DataGridView只顯示數據(只讀)在DataGridView不起作用,且用戶無法通過datagridview的直接輸入數據,而是通過數據源數據成員。爲防止用戶輸入數據,我確實設置了:自動滾動時AllowUserToAddRows =假

m_dView.AllowUserToAddRows = false;

爲什麼設置後,DataGridView自動滾動不起作用?

m_dView.DataSource = ds; 
m_dView.DataMember = dm; 
m_dView.AutoGenerateColumns = true; 
m_dView.MultiSelect = false; 
m_dView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
m_dView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
m_dView.ReadOnly = true; 
m_dView.AllowUserToAddRows = false; 
m_dView.AllowUserToDeleteRows = false; 
m_dView.AllowUserToOrderColumns = false; 
m_dView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 
m_dView.AllowUserToResizeColumns = false; 
m_dView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; 
m_dView.AllowUserToResizeRows = false; 
m_dView.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing; 

// auto scroll only worked only when m_dView.AllowUserToAddRows = true; 
if (m_dView.Rows.Count > 0) { 
    m_dView.CurrentCell = m_dView.Rows[m_dView.Rows.Count - 1].Cells[0]; 
} 
+0

你可以試試我提供的樣品嗎? –

+0

我嘗試了一切,但沒有任何工作。 –

回答

1

我已經創建了一個代碼示例,如下所示,它完美的工作。 拖放如下圖所示的新形式在DataGridView控件並把它命名爲m_dView

創建點擊它時,我運行下面

using (SqlConnection c = new SqlConnection("Server=localhost;Database=deno;Trusted_Connection=True;")) 
      { 
       c.Open(); 

       using (SqlDataAdapter a = new SqlDataAdapter(
        "SELECT * FROM test", c)) 
       { 
        // 3 
        // Use DataAdapter to fill DataTable 
        string dm = "TestScroll"; 
        DataSet ds = new DataSet(); 
        a.Fill(ds, dm); 
        // 4 
        // Render data onto the screen 
        m_dView.AllowUserToAddRows = false; 
        m_dView.DataSource = ds; 
        m_dView.DataMember = dm; 
        m_dView.AutoGenerateColumns = true; 
        m_dView.MultiSelect = false; 
        m_dView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
        m_dView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
        m_dView.ReadOnly = true; 
        m_dView.AllowUserToAddRows = false; 
        m_dView.AllowUserToDeleteRows = false; 
        m_dView.AllowUserToOrderColumns = false; 
        m_dView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 
        m_dView.AllowUserToResizeColumns = false; 
        m_dView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; 
        m_dView.AllowUserToResizeRows = false; 
        m_dView.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing; 

       } 
       m_dView.FirstDisplayedScrollingRowIndex = m_dView.Rows.Count-1; 
      } 

代碼樣本按鈕,我已經滾動GridView控件到最後一行使用DataGridView.FirstDisplayedScrollingRowIndex物業

例如

m_dView.FirstDisplayedScrollingRowIndex = m_dView.Rows.Count-1; 

你可以複製和粘貼後續將代碼添加到新項目並測試?這可能是一些其他問題,是真正的罪魁禍首。

+0

謝謝。我試着用m_dView.FirstDisplayedScrollingRowIndex = m_dView.Rows.Count - 1;但相同的結果,自動滾動不起作用。 –

+0

你可以試試FirstDisplayedCell選項嗎? –

+0

我試着用m_dView.FirstDisplayedCell = m_dView.CurrentCell;但是相同的scrooll,仍然不起作用。 –