HI Board,
seit ich hier gelernt hab wie ich Steuerelemente in Klassen packe und dynamisch lade, habe ich bissl rumprobiert.
Ziel ist, eine einfach Lösung für eine mehrspaltige Dropdownlist mit einem DataGrid und einem aktiven Filter alà Dataview.Rowfilter.
Zuerst hab ich eine neue Klasse erstellt und diese von system.windows.forms.panel erben lassen.
Dann habe ich dem Panel noch ein Datagrid hinzugefügt und das auf die Größe vom Panel angepasst.
Der Einfachheit halber habe ich einen Klick Handler auf das Datagrid gemacht, der mir dann an ein Element (Textbox) in einer anderen Klasse(meine Form) die Eigenschaft Text setzt.
Im Konstruktor übergebe ich die Texbox als Object. Weis nicht ob das so richtig ist, aber das kam mir so in den sinn.
Wie stelle ich es an das der Textbox ein Wert geben kann?
hier die Klasse:
Public Class choosegrid
Inherits System.Windows.Forms.Panel
Dim datagrid2 As New System.Windows.Forms.DataGrid
Dim objreturnto As Object
Public Property returnto() As Object
Get
Return objreturnto
End Get
Set(ByVal Value As Object)
objreturnto = Value
End Set
End Property
Public Sub AddControls(ByVal gridpanel As Panel)
gridpanel.Controls.Add(Me.datagrid2)
datagrid2.DataMember = ""
Me.datagrid2.HeaderForeColor = System.Drawing.SystemColors.ControlText
Me.datagrid2.Location = New System.Drawing.Point(0, 0)
Me.datagrid2.Name = "DataGrid2"
Me.datagrid2.Size = New System.Drawing.Size(gridpanel.Width, _
gridpanel.Height)
Me.datagrid2.TabIndex = 0
AddHandler datagrid2.Click, AddressOf Returnvalue
End Sub
Private Sub Returnvalue(ByVal sender As Object, ByVal e As System.EventArgs)
CType(returnto, System.Windows.Forms.TextBox).Text = "Hallo"
End Sub
Public Sub New(ByVal startx As Integer, ByVal starty As Integer, ByVal _
returnto As Object)
MyBase.New()
MyBase.Location = New System.Drawing.Point(startx, starty)
MyBase.Name = "Panel3"
MyBase.Size = New System.Drawing.Size(504, 376)
Visible = False
End Sub
End Class Dazu noch meine Form:
Public chooser as choosegrid
Private Sub gridchooser_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Me.Chooser = New choosegrid(TextBox1.Left, TextBox1.Top + _
TextBox1.Height, TextBox1)
Me.Chooser.BorderStyle = BorderStyle.FixedSingle
Me.Chooser.AddControls(Chooser)
Me.Chooser.Visible = False
Me.Chooser.Left = TextBox1.Left
Me.Chooser.Top = TextBox1.Top + TextBox1.Height
Me.Controls.Add(Me.Chooser)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
If Chooser.Visible = False Then
Chooser.Visible = True
ElseIf Chooser.Visible = True Then
Chooser.Visible = False
End If
End Sub Bin für jede Hilfe dankbar!
Ich möchte dann später noch eine datatable an die klasse übergeben welche das Grid dann anzeigen soll. Wenn dann in der Textbox auf meiner Form ein zeichen eingetragen werden, soll sich der Rowfilter des Defaultview dieses Grids ändern um so mehr und mehr Datensätze einzuschränken.
Wie gesagt, hier komm ich einfach nicht weiter.
wünsche Euch allen schöne Pfingsten.
GRuß
Spassmann |