2015-07-03 31 views
1

这是我的代码 - 我想为我的第二列添加combobox。因此,无论用户在该列中输入什么值,都可以用于进一步操作。我故意改变了组合中的项目。如何在datagridview中为头添加组合框?

Dim cmbHeaderCell As New ComboBox 
cmbHeaderCell1.DropDownStyle = ComboBoxStyle.DropDownList 
cmbHeaderCell1.Visible = True 

cmbHeaderCell1.Items.Add("India") 
cmbHeaderCell1.Items.Add("China") 
DGrdVLoadStb.Columns(1).Width = cmbHeaderCell1.Width 

cmbHeaderCell1.Location = DGrdVLoadStb.GetCellDisplayRectangle(1, -1,True).Location 
cmbHeaderCell1.Size = DGrdVLoadStb.Columns(1).HeaderCell.Size 
cmbHeaderCell1.SelectedIndex = 0 

在这里,我从GetCellDisplayRectangle(1, -1, True)方法获取位置(0, 0)。我已经在stackoverflow上检查了许多相关的问题,但我没有得到完美的答案,请帮助我。先谢谢你。

+0

添加组合框到哪个表面?它漂浮在窗体上吗? –

+0

现在?是的,它位于datagridview的左上角。我想在第二栏的标题处。 – Yog

+0

我想,你的问题是,当你从网格中获得X,Y时,它是相对于网格的。所以,你需要为网格所在的表面创建偏移逻辑。所以,可以说,'grid.control.Location'返回'0,0',在窗体上它可能是'10,20' –

回答

0

正如我在评论中写道,我设法通过使用要做到这一点, 1宽度datagridview加入2〜它和 2.使得它作为我的combobox loacation X,Y的第一列的为2 这里是我的代码,

 Dim cmbHeaderCell1 As New ComboBox 
     cmbHeaderCell1.DropDownStyle = ComboBoxStyle.DropDownList 
     cmbHeaderCell1.Visible = True 
     cmbHeaderCell1.Items.Clear() 
     cmbHeaderCell1.Items.Add("India") 
     cmbHeaderCell1.Items.Add("China") 
     DGrdVLoadStb.Columns(1).Width = cmbHeaderCell1.Width 

     'Dim X As Integer = DGrdVLoadStb.GetCellDisplayRectangle(1, -1, False).Location.X 
     'Dim Y As Integer = DGrdVLoadStb.GetCellDisplayRectangle(1, -1, True).Location.Y 
     cmbHeaderCell1.Location = New Point(datagridview1.Columns(0).Width + 2, 2) 
     cmbHeaderCell1.Size = DGrdVLoadStb.Columns(1).HeaderCell.Size 
     cmbHeaderCellStressRate.DropDownStyle = ComboBoxStyle.DropDownList 
     DGrdVLoadStb.Controls.Add(cmbHeaderCell1) 
     cmbHeaderCell1.SelectedIndex = 0 

如果任何人有更好的解决方案,请发布它,我会接受它。