2017-08-29 86 views
0

我希望我的用戶能夠在加載第一行第一列的datagridview時加載的表單開始鍵入。無論我做什麼,用戶都必須點擊單元格才能開始輸入。 這是我迄今爲止在載入事件中嘗試過的形式。Datagridview在加載時開始編輯

With dgTable 
     .Focus() 
     .Rows.Add(50) 
     .EditMode = DataGridViewEditMode.EditOnEnter 
     .CurrentCell = .Rows(0).Cells(0) 
     .BeginEdit(False) 

    End With 

誰能告訴我我需要做什麼?

+0

首先,你需要閱讀[問]和取[旅遊],是因爲你還沒有。表單直到所有表單加載代碼運行後才顯示。由於它不可見,因此大多數UI方面都無法實現。 'Shown'事件中的代碼會在顯示後運行* – Plutonix

+0

如何在最後添加'.Focus()'? – Subaz

+0

如果我沒有做正確的事情,我很抱歉。我經歷了這個問題,我仍然不確定我做錯了什麼。將.focus添加到最後不起作用。我嘗試將它添加到激活的事件,然後嘗試顯示的事件,並沒有工作。 – clearfog1962

回答

0
dgTable.Item(0, 0).Selected = True 

將選擇第一個單元格並允許在加載時輸入。 和刪除.BeginEdit(假)和.CurrentCell = .Rows(0).Cells(0)

所以:

With dgTable 
    .Focus() 
    .Rows.Add(50) 
    .EditMode = DataGridViewEditMode.EditOnEnter  
    .Item(0, 0).Selected = True 
End With 
+0

是啊!謝謝Philip – clearfog1962

+0

@ clearfog1962請將答案標記爲接受以幫助未來的人。很高興它對你有效 – Philip556677

0

負載事件是不理想的,由於控制是不可見然而。嘗試使用EditProgrammatically設置和使用窗體的顯示的覆蓋方法代替:

Protected Overrides Sub OnShown(e As EventArgs) 
    MyBase.OnShown(e) 
    dgTable.EditMode = DataGridViewEditMode.EditProgrammatically 
    dgTable.BeginEdit(False) 
End Sub