vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Problemchen bei Verwendung einer ComboBox mit DataSource 
Autor: Atlas
Datum: 24.11.11 14:20

nochmal von vorn (jetzt mal mit etwas Code)

Das (eigene) Steuerelement namens "TimeWindow" ist so aufgebaut, dass 4 Properties beliebig gesetzt werden können. Es müssen also nicht alle gesetzt, bzw. verändert werden. Meist sind es nur zwei. Mal die einen, mal die anderen zwei. Mit einer "Startfunktion" erfolgt dann die Weiterverarbeitung.

In meiner aktuellen Anwendung sind nun die 4 Properties an eine DataTable "dt" gebunden:
            With TimeWindow
                .DataBindings.Clear()
                .DataBindings.Add("TimeStartMin", dt, "start")
                .DataBindings.Add("TimeStart", dt, "start")
                .DataBindings.Add("TimeStop", dt, "stop")
                .DataBindings.Add("TimeStopMax", dt, "stop")
            End With
Gesteuert wird die DataTable durch eine ComboBox mit DataSource:

            With cbo
                .DataSource = dt
                .DisplayMember = "Name"
                .ValueMember = "ID"
            End With
Wird die ComboBox betätigt, werden die Properties auch aufgerufen. So weit, so gut.
Was fehlt, ist die Möglichkeit meinem Steuerelement einen "Startbefehl" zu geben, und zwar NACH dem aktualisieren der Properties.

Da alle ComboBox Events schon VOR dem Aktualisieren der BataBindings kommen, helfen sie mir nicht.

Als Workaround habe ich dann eine zusätzliche TextBox an die Datatable gebunden.

            With BindingTextBox
                .DataBindings.Clear()
                .DataBindings.Add("Text", dt, "ID")
            End With
über den TextChanged-Event der BindingTextBox wird mein Steuerelement dann gestartet:

    Private Sub BindingTextBox_TextChanged(ByVal sender As Object, ByVal e As _
      System.EventArgs) Handles BindingTextBox.TextChanged
        TimeWindow.Start()
    End Sub
Das Ganze funktioniert wohl, aber es gibt da einige Unsicherheiten, z.B. ist mir nicht bekannt, in welcher Reihenfolge die Bindungen akzualisiert werden. Zuerst die BindingTextBox oder zuerst das TimeWindow?
Bei mir kommt zuerst das TimeWindow und dann die BindingTextBox.

Heute Vormittag habe ich mich dann - dem Tip entsprechend - mit einer zusätzliche BindingSource und dem "BindingComplete"-Event herumgeschlagen, aber leider hat mich das auch nicht weitergeracht.

    Private BS As New BindingSource()
...
 
    Private WithEvents id As Binding
...
 
            With BindingTextBox
                .DataBindings.Clear()
                id = .DataBindings.Add("Text", BS, "ID")
            End With
 
...
            With cbo
                .DataSource = BS
                .DisplayMember = "Name"
                .ValueMember = "ID"
            End With
...
 
    Private Sub id_BindingComplete(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.BindingCompleteEventArgs) Handles id.BindingComplete
        Debug.Print("BindingComplete")
    End Sub
 
    Private Sub id_Format(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.ConvertEventArgs) Handles id.Format
        Debug.Print("Format")
    End Sub
 
...
Meine Experimente habe ich mit der BindingTextBox durchgeführt. Leider bekomme ich es nicht hin, dass das "BindingComplete" gefeuert wird, wohl aber "Format" !?! Der "BindingComplete" kommt auch nicht, wenn ich etwas in die TextBox eingebe.
Ich weiss leider aber auch nicht, wie mir diese Events bei meinem Problem helfen könnten.
So komme ich da irgendwie nicht weiter.


Ich habe da noch einen anderen Ansatz, aber auch noch zwei unbeantwortete Fragen dazu.
Das Betätigen der ComboBox verändert doch sozusagen die aktuelle DataRow der DataTable.
1) Gibt es ein Event der mitteilt, das sich die aktuelle Row geändert hat?
und
2) Wie komme ich denn eigentlich an die Daten der nichtgebundenen Columns der aktuellen DataRow heran?
etwa nur so:
ActDataRow = dt.Select("ID=" & BindingTextBox.Text)(0))
oder auch noch anders?

Vielleicht hat ja jemand auch noch eine ganz andere Idee.


Erstmal vielen Dank
Gruß
Helmut

Beitrag wurde zuletzt am 24.11.11 um 14:22:38 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problemchen bei Verwendung einer ComboBox mit DataSource4.292Atlas23.11.11 16:30
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.460Christoph197223.11.11 16:45
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.408Atlas23.11.11 17:13
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.492ModeratorFZelle23.11.11 18:28
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.514Atlas23.11.11 18:40
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.424ModeratorFZelle24.11.11 09:45
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.446Atlas24.11.11 14:20
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.388ModeratorFZelle24.11.11 20:36
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.636Atlas25.11.11 09:58
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.453Christoph197224.11.11 22:01
Re: Problemchen bei Verwendung einer ComboBox mit DataSource2.474Atlas25.11.11 09:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel