| |
VB.NET - Ein- und UmsteigerZustand einer Checkbox in TabPage | | | Autor: Theo_kkv | Datum: 21.12.16 09:26 |
| Hallo,
ich habe nach langem Probieren herausgefunden, dass trotz des programmgesteuerten Setzens (checked=true/fals) die Checkbox erst diese Eigenschaft erhält, wenn man auf den entspr. Tab klickt. Das hat schon fast einen Quantentheoretischen Anstrich im Sinne "Ist der Mond auch da, wenn keiner hinsieht".
Ungünstig ist es nur in dem Fall, wenn der Anwender [u]nicht die Tabpage mit der Checkbox aufruft, dann hat sie unter Umständen einen falschen Zustand. Hat jemand einen Tipp, wie das gelöst werden kann?
Danke
Tom | |
Re: Zustand einer Checkbox in TabPage | | | Autor: JangoF | Datum: 21.12.16 12:38 |
| Kann ich nicht nachvollziehen.
Ich kann von Tab1 eine Checkbox auf Tab2 auf Checket false oder true setzen und eine Abfrage liefert dann auch das richtige Ergebnis ohne das Tab2 jemals zu sehen war. | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Manfred X | Datum: 21.12.16 13:09 |
| Das kann ich bestätigen.
Theo, versuche mal, ob Du diesen Effekt als Democode reproduzieren kannst. | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Theo_kkv | Datum: 21.12.16 15:13 |
| Hallo,
ich glaube, etwas Aufhellung in die Sache zu bringen. Ich hatte es nicht erwähnt -weil es mir nicht von Bedeutung erschien, aber es scheint doch die Ursache zu sein- , ich habe den Wert über Databinding an die Checkbox gebunden. Wahrscheinlich feuert die Databinding erst, wenn auch die Checkbox in den sichbaren Bereich kommt.
Was meint ihr dazu?
Grüße Tom | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Franki | Datum: 22.12.16 01:24 |
| Hallo Tom,
Das kannst du doch ganz einfach an einem Testprojekt kontrollieren. Aber ich bezweifle, dass ein Event ausgelöst wird wenn etwas sichtbar wird. Beschreibe doch mal mit Beispielcode wie du das auf den Tabs machst bzw. wie die gewechselt werden, wann Events auf den anderen (die unsichtbar für den User auftreten) usw. beandelt werden.
Gruß
Frank | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Manfred X | Datum: 22.12.16 06:41 |
| Hallo!
Wie hast Du die Bindung organisiert?
Falls die Bindung durch eine Bindingsource erfolgt, stehen in dieser
Klasse Reset-Methoden zur Verfügung (z.B. ResetCurrentItem).
Nach einer Änderung der Datenquelle kann dadurch ein neues
Lesen und Anzeigen der gebundenen Daten angefordert werden. | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Theo_kkv | Datum: 22.12.16 09:49 |
| Hallo,
ich habe die Bindung so realisiert.
Me.TextBox12.DataBindings.Add(New Binding("Text", loc_bs, "Strasse", False, _
DataSourceUpdateMode.Never)) Ich habe ferner den Werte für die Strasse (aus einem Adressdatensatz z.B. "Dorfstraße") auf TabPage3 gesetzt und zur Laufzeit abgefragt. Tatsächlich ergab sich für die Textbox12 ein Leerwert.
Grüße
Tom | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Manfred X | Datum: 22.12.16 10:20 |
| Checkbox? Textbox? Worum geht es?
Hast Du eventuell irgendwo im Code die SuspendBinding-Methode
der Bindingsource aufgerufen und noch kein ResumeBinding gegeben?
Bist Du Dir übrigens im Klaren, was der Parameter-Wert
DatasourceUpdateMode.Never bewirkt?
(Änderungen des Control durch den Benutzer - z.B. Check-Zustand -
werden nicht automatisch in die Datenquelle übernommen.)
Beitrag wurde zuletzt am 22.12.16 um 10:26:52 editiert. | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Theo_kkv | Datum: 22.12.16 11:25 |
| sorry, ich wollte nicht noch mehr Verwirrung in das Thema bringen. Die Checkbox habe ich so eingebunden
Me.CheckBox2.DataBindings.Add(New Binding("CheckState", loc_primaer_bs, _
"hat_bezahlt", True, DataSourceUpdateMode.Never)) Der vorherige Code mit der Textbox war nur ein Beispiel, weil es bei einer Textbox auch diesen Effekt gibt.
SuspendBinding/ResumeBinding werden nicht angewendet.
Die Auswirkungen von DatasourceUpdateMode.Never sind mir bekannt. Ich fand es problematisch, wenn der Anwender zwar irgendwelche Einträge geändert hat (die dann gleich in der Datatable landeten), sich jedoch später mit "Schliessen" aus dem Dialog ohne Speicherung verabschieden wollte. | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Manfred X | Datum: 22.12.16 13:34 |
| Ich kann Dein Problem nicht nachvollziehen.
Bei mir wird der per Programm geänderte Wert (Button) in die
Quelle (Datatable) eingetragen, unabhängig davon,
welche "TabPage" gerade aktiv ist.
Public Class frmcboBinding
Dim cbo As New CheckBox
Dim dt As New DataTable
Dim bs As New BindingSource
Dim WithEvents btnModify As New Button With _
{.Parent = Me, .Text = "Modify"}
Dim tc As New TabControl With {.Parent = Me}
Private Sub frmcboBinding_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
'Testdaten
dt.Columns.Add("Bool", GetType(Boolean))
dt.Rows.Add(True)
dt.Rows.Add(False)
'Datenbindung
bs.DataSource = dt
cbo.DataBindings.Add _
("Checkstate", bs, "Bool", True, DataSourceUpdateMode.Never)
'Tabcontrol einrichten
tc.Size = New Size(200, 200)
tc.Top = 50
With tc
.TabPages.Add(New TabPage("Null"))
.TabPages.Add(New TabPage("Bool"))
.TabPages(0).Location = New Point(5, 5)
cbo.Parent = tc.TabPages(1)
End With
End Sub
Private Sub btnModify_Click(sender As Object, _
e As System.EventArgs) Handles btnModify.Click
'Wert ändern
Dim value As Boolean = True
If dt.Rows(0)(0).Equals(True) Then value = False
dt.Rows(0)(0) = value
'Ist der Wert in die Quelle eingetragen ????
If Not dt.Rows(0)(0).Equals(value) Then Stop
End Sub
End Class | |
Re: Zustand einer Checkbox in TabPage | | | Autor: Theo_kkv | Datum: 25.12.16 17:59 |
| Na ja, so richtig weiss ich nicht, woran es hapert. Ich habe mich zwischenzeitlich von Databinding verabschiedet und alles über ein normales Objekt verknüpft. Geht auch gut. Ich schlage vor, das Thema mt offenem Ende zu schließen.
Vielen Dank an alle, die mitgeholfen haben.
Grüße Tom | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|