1

我遇到了一个完全让我困惑的问题。

我有一个动态添加的包含许多列和行的 DataGridView,我想要实现的是在 mouse_up 上我希望在选定的单元格上绘制一个按钮。因此,例如,如果我选择 row3 的前 3 个单元格,则应在 3 个单元格上绘制一个按钮。

我尝试使用每个选定单元格的 X 和 Y 并将其转换为按钮列,但这不起作用。我目前拥有的是示例代码,它只是将按钮添加到屏幕上,但它们不会出现在屏幕上(因此是标题)。一旦我让按钮出现在屏幕上,我将尝试将它们绘制在选定的单元格上,但我需要先克服这个障碍

这是我正在使用的代码:

    'I dynamically add the DataGridView
    Grid = New DataGridView
    Grid.Dock = DockStyle.Fill
    Grid.BackgroundColor = Color.White
    Grid.RowHeadersVisible = False
    Grid.AllowUserToOrderColumns = False
    Grid.AllowUserToResizeRows = False

    ...

    TabControl.SelectedTab.Controls.Add(Grid)

    AddHandler Grid.CellMouseUp, AddressOf Grid_MouseUp

    ...
   'On mouse up it calls the sub to add buttons
    Private Sub Grid_MouseUp(ByVal sender As Object, ByVal e As         System.Windows.Forms.DataGridViewCellMouseEventArgs)

    Dim i As Integer

    For i = 1 To 30
        NewButton(i) 'calls the dub
    Next i

End Sub

'这是子

Private Sub NewButton(ByVal ButtonNumber As Integer)

    Dim oButton As Button
    oButton = New Button
    oButton.Enabled = True
    oButton.Location = New Point(ButtonNumber + 50, ButtonNumber + 50)
    oButton.Name = "MyButton" & ButtonNumber.ToString
    oButton.Size = New Size(75, 23)
    oButton.Text = "Button" & ButtonNumber.ToString
    oButton.Visible = True

    oButton.Tag = ButtonNumber

    TabControl.SelectedTab.Controls.Add(oButton)
End Sub

如果你们能建议我需要更改什么以实现此功能,我将不胜感激。

谢谢你的时间

4

1 回答 1

1

也许你的按钮在其他控件下,oButton.BringToFront()在你将按钮添加到 Tabcontrol 控件后尝试调用。

于 2012-10-31T11:46:41.693 回答