| |
| Blechfertigung: Leitfaden zur Materialauswahl, ein Fachartikel
|
Autor
|
Thema: SplitContainer und Settings (2093 mal gelesen)
|
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 17. Jul. 2012 14:16 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, hat's schon mal jemand geschafft, in einer Winform mit SplitContainern die jeweilige SplitterDistance als funktionierendes Setting zu verwenden, ohne in der Klappsmühle zu enden ? Entweder springen die Splitter schon in der laufenden Anwendung unkontrolliert durch die Gegend, während man einen davon ändert, und/oder die, in der user.config korrekt eingetragenen Werte werden beim nächsten Start nicht oder falsch übernommen. Bin ich nur zu blöd oder ist das evtl. ein bekannter Bug ? Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 817 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 17. Jul. 2012 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für mseufert
Hallo Michael hab es auch mit VB Express 2010 nachvollziehen können. Sobald man die SplitterDistance in den ApplicationSettings verknüpft, spinnt das Ding. WorkAround -> Settings manuell setzen und speichern (Nicht vergessen die bestehenden PropertyBindings zu entfernen)
Code: Public Class Form1 Public Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. SplitContainer1.SplitterDistance = My.Settings.split_hor SplitContainer2.SplitterDistance = My.Settings.split_ver_1 SplitContainer3.SplitterDistance = My.Settings.split_ver_2 End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing My.Settings.split_hor = SplitContainer1.SplitterDistance My.Settings.split_ver_1 = SplitContainer2.SplitterDistance My.Settings.split_ver_2 = SplitContainer3.SplitterDistance End Sub End Class
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005
|
erstellt am: 17. Jul. 2012 16:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Andreas, vielen Dank für die Bestätigung, daß hier was faul ist und für Deinen Tipp. Das manuelle Bearbeiten hab' ich schon versucht, einziger Unterschied: Statt in der Sub New stand's im FormLoad-Handler. Die Lösung hat zunächst gut ausgesehen, bis ... die SplitContainer auf einem TabControl drauf sind. Dann wird der Wert des Settings beim Umschalten der TabPage von irgend einem Spaßvogel geändert. Wenn ich den erwische ... Gruß, Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 17. Jul. 2012 16:57 <-- editieren / zitieren --> Unities abgeben: Nur für mseufert
Und im TabIndexChanged - Event den TabIndex überprüfen (ob es sich um den Tab mit dem SplitContainer handelt) und dem SplitContainer die SplitterDistance erneut manuell zuweisen funktioniert auch nicht? Grüße Tobias ------------------ Besucht mich doch mal in meiner Tischlerei "...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder "...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..." [Diese Nachricht wurde von MWN am 17. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 17. Jul. 2012 17:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, das könnte gehen, falls der Wert zum Zeitpunkt des Events noch o.k. ist. Muss ich bei Gelegenheit mal näher untersuchen. Als Optimist mit Erfahrung befürchte ich allerdings, daß dann wieder andere Events dazwischen funken, z.B. ein Resize der Form - mal sehen ... Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Ehrenmitglied V.I.P. h.c. Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005
|
erstellt am: 07. Aug. 2012 20:10 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, so, auch diese harte Nuss ist geknackt. Der Weg zu einer halbwegs vernünftigen und nach ersten Tests funktionierenden Lösung geht wie folgt: Für alle SplitContainer einen Handler für das SplitterMoved- Event anlegen und den Container zusammen mit der jeweiligen SplitterDistance irgendwie protokollieren. Hab's in eine ListBox geschrieben, aber das geht sicher auch auf anderen Wegen. Am Log läßt sich jetzt erkennen, was wann schief geht. In meinem Fall war's so, daß beim ersten Aktivieren einer TabPage das zunächst korrekt übernommene Setting willkürlich geändert wurde. Bei jedem weiteren Umschalten der TabPages wurde das Event nicht mehr ausgelöst und die Distance blieb konstant. Daraus ergibt sich die Lösung, vor dem manuellen Setzen des Settings im FormLoad Handler die jeweilige TabPage mit dem entsprechenden SplitContainer zu selektieren. So ist das problematische erste Umschalten der TabPage ausgetrickst und die SplitterDistance wird nicht mehr "von Geisterhand" verändert. Daß diese spezielle Lösung auch in allen anderen Fällen hilft, in denen die SplitContainer spinnen, ist nicht anzunehmen. Bei einem anderen Aufbau der WinForm könnte der Hund an einer anderen Stelle begraben sein. Durch das Loggen der SplitterMoved- Events kommt man ihm jedenfalls auf die Schliche. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |