2013-08-16 73 views
0

我创建了一个自定义控件,它继承了datagridview并添加了一些自定义属性。我只是添加停靠在它的顶部的工具栏控制,因此它可以有像添加行功能,删除行等,但它显示像下面这个图片:在VB.Net的datagridview中添加工具栏

enter image description here

,你可以看到的columnHeader下得工具箱控制...我只是希望他们不要互相重叠...请帮助。

编辑

我只是插入这样一个自定义属性:

Dim _Toolbox_ As Toolstrip 
Dim _ShowToolbar As Boolean 

Public Property ShowToolbar() As Boolean 
    Get 
     Return _ShowToolbar 
    End Get 
    Set(ByVal value As Boolean) 
     _ShowToolbar = value 
     If value = True Then 
      _Toolbox_ = New Toolstrip 
      MyBase.Controls.Add(_Toolbox_) 
      _Toolbox_.Dock = Windows.Forms.DockStyle.Top 
      _Toolbox_.Visible = True 
     Else 
      MyBase.Controls.Remove(_Toolbox_) 
      _Toolbox_ = Nothing 
     End If 
    End Set 

高端物业

+0

我会比很乐意帮助你更多,如果你表现出一定的代码。这会帮助我理解你正在努力完成的事情。你是自定义使用继承来绘制控件,还是你如何做到这一点? – Codexer

+0

是的,我正在继承datagridview对象。 – illumi

回答

1

这里的问题是,你的Toolstrip是你DataGridView内部控制,并作为它的位置原点(0,0)是DataGridView的左上角。

在这种情况下,您最好创建一个User Control,以便您将Toolstrip置于DataGridView以上。你会暴露他们两个作为属性,使你仍然可以访问控件自己的属性和方法,并添加属性打开Toolstrip的显示或关闭,并相应地设置DataGridView的位置:

Dim _ShowToolbar As Boolean 
Dim _Toolbox As Toolstrip 

Public Property ShowToolbar() As Boolean 
    Get 
     Return _ShowToolbar 
    End Get 
    Set(ByVal value As Boolean) 
     _ShowToolbar = value 
     If value Then 
      If _Toolbox Is Nothing Then 
       _Toolbox = New Toolstrip() 
       Me.Controls.Add(_Toolbox) 
      End If 

      _Toolbox.Location = New System.Drawing.Point(0,0) 
      _DataGridView.Location = New System.Drawing.Point(0,_Toolbox.Size.Height) 
      _Toolbox.Visible = True 
     Else 
      _Toolbox.Visible = False 
      _DataGridView.Location = New System.Drawing.Point(0,0) 
     End If 
    End Set 
End Property 

所有这一切都来自大脑编译器,所以可能会有错误,但它应该让你开始。

+0

谢谢,我会尝试应用您的建议。 – illumi

0

使用分割面板,然后插入您的工具栏,面板1和datagridview的进入面板2.