2017-08-29 94 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