0

datagridview を継承し、いくつかのカスタム プロパティを追加するカスタム コントロールを作成しました。行の追加、行の削除などの機能を持つことができるように、その上にドッキングされたツールバー コントロールを追加するだけですが、下の画像のように表示されます。

ここに画像の説明を入力

ご覧のとおり、列ヘッダーはツールボックス コントロールの下にありました...互いに重ならないようにしたいだけです...助けてください。

編集

次のようなカスタム プロパティを挿入するだけです。

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

End プロパティ

4

2 に答える 2

1

ここでの問題は、 yourToolstripが 内のコントロールであり、DataGridViewその位置の原点 (0,0) が の左上隅であることDataGridViewです。

この場合、 をの上に配置できるユーザー コントロール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

これらはすべてブレイン コンパイラによるものであるため、エラーが含まれている可能性がありますが、これで作業を開始できます。

于 2013-08-20T03:22:31.613 に答える