Ich muss schon etwas länger nachdenken, bin nämlich Jahrgang 1964:
Alles in allem waren es herrliche Zeiten. Früher war wahrscheinlich alles besser, schließlich waren ja auch die Brötchen dicker und die Winter schneereicher.
Heute programmiere ich nur noch als Hobby und wenn ich sehe, was die IDEs heute so bieten, freue ich mich richtig.
Aber jetzt höre ich auf, bevor mir noch vor lauter Wehmut die Tränen kommen.
Bis dann
Regenfreund
Ich traue mich mal, hier mitzureden.
Ich habe eine Anwendung mit Stoppuhr-Funktion erstellt, um bei Einzelzeitfahren den versetzten Start der Fahrer und die Zeitnahme abzuwickeln. Dabei erzeuge ich auch die bekannten Sekundenpiepser in den letzten fünf Sekunden vor dem Start und bei Erreichen der Startzeit den langen Piepser. Die Zeitüberwachung übernimmt ein selbstgebasteltes Control, das im Sekundentakt einen Event auslöst. Der Eventhandler startet dann über ein wenig Überwachungslogik einen Thread zum Piepsen.
Warum ein Thread? Weil sonst für die Dauer des Piepsens die Stoppuhren "stehen". Soll heißen, die Anzeige stolpert.
Long story short: das ist sekundengenau (oder allgemeiner genau zum gewünschten Zeitpunkt) im Rahmen der Idle-Timer-Auflösung und es piepst optisch und akustisch immer genau zur Sekunde. Und eigentlich recht simpel.
Also ich denke, ein Thread würd's tun. Bleibt die Frage, wie man dein "Laden aus einer Textdatei" vorab erledigen kann. Aber wenn du damit zum gewünschten Zeitpunkt der MP3-Sirene erst anfängst, wird die Sirene wohl zwangsläufig ein wenig hinterherhinken.
Regenfreund
Irgendeins deiner Objekte, die du dort verwendest ist nicht per new erzeugt. Ich tippe mal auf dein rtbDoc, was immer es auch ist.
Die Fehlermeldung ist an dieser Stelle eigentlich ziemlich eindeutig.
rtbDoc = new WasAuchimmer;
Regenfreund
Wer von euch hat sich mal die Mühe gemacht, den ganzen Thread zu lesen? Vermutlich keiner.
Ich fasse mal zusammen:
Es steht allerdings nicht so direkt drin, man muss schon ein wenig nachdenken... 😁
Ich habe jetzt eigentlich nur eine Anfängerfrage: wer schließt diesen Thread, beendet damit die Diskussion und ermöglicht den Beteiligten sich um die wichtigen Dinge des Lebens zu kümmern?
Grüße
Regenfreund
Nein, Umstände macht es keine, wenn man davon absieht, dass ich zur Zeit nicht daheim bin und der Zugriff auf die Sources daher etwas umständlich ist.
Ich habe mal per normalem Editor den interessanten Teil aus der vom Designer erzeugten Datei rausgezogen.
Ich habe genau drei Elemente:
Und ich wollte natürlich auch, dass die am rechten Rand ist.
Mehr kann ich momentan nicht bieten.
Regenfreund
//
// toolStripContainer1
//
//
// toolStripContainer1.BottomToolStripPanel
//
this.toolStripContainer1.BottomToolStripPanel.Controls.Add(this.statusStrip1);
//
// toolStripContainer1.ContentPanel
//
this.toolStripContainer1.ContentPanel.Controls.Add(this.approacherDisplay);
resources.ApplyResources(this.toolStripContainer1.ContentPanel, "toolStripContainer1.ContentPanel");
resources.ApplyResources(this.toolStripContainer1, "toolStripContainer1");
this.toolStripContainer1.LeftToolStripPanelVisible = false;
this.toolStripContainer1.Name = "toolStripContainer1";
this.toolStripContainer1.RightToolStripPanelVisible = false;
this.toolStripContainer1.TopToolStripPanelVisible = false;
//
// statusStrip1
//
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStrip_MainLabel,
this.tSSL_AutoRennen,
this.toolStripProgressBar1});
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode;
this.statusStrip1.SizingGrip = false;
//
// toolStrip_MainLabel
//
this.toolStrip_MainLabel.Name = "toolStrip_MainLabel";
resources.ApplyResources(this.toolStrip_MainLabel, "toolStrip_MainLabel");
this.toolStrip_MainLabel.Spring = true;
//
// tSSL_AutoRennen
//
this.tSSL_AutoRennen.ActiveLinkColor = System.Drawing.Color.Red;
this.tSSL_AutoRennen.BackColor = System.Drawing.Color.Red;
this.tSSL_AutoRennen.BorderStyle = System.Windows.Forms.Border3DStyle.Raised;
this.tSSL_AutoRennen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
resources.ApplyResources(this.tSSL_AutoRennen, "tSSL_AutoRennen");
this.tSSL_AutoRennen.ForeColor = System.Drawing.Color.Black;
this.tSSL_AutoRennen.Name = "tSSL_AutoRennen";
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Margin = new System.Windows.Forms.'adding(2);
this.toolStripProgressBar1.MarqueeAnimationSpeed = 75;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Padding = new System.Windows.Forms.Padding(1);
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.Step = 1;
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
this.toolStripProgressBar1.Value = 50;
Also ich habe genau das was du suchst gemacht und das ging ohne Probleme. Meinst du es in etwa so?
Wenn ja, poste ich mal den Code.
Regenfreund
Sorry Leute, aber ich muss es nochmal ausgraben. Ich habe jetzt eigentlich (fast) das gewünschte Verhalten hingebracht. Eine selektierte Zeile bleibt selektiert, auch wenn eine neue angefügt wird. Allerdings springt die Selektion einmal kurz auf die neue und wird dann von mir wieder rückgesetzt.
Hat denn niemand eine Idee, wie ich das verhindern kann, dass bei AddNew die hinzugefügte Zeile automatisch selektiert ist.
Danke
Regenfreund
So, ich kann Entwarnung geben. Alle meine Versuche hatten sich immer um SelectionChanged gedreht. Dieser Event kommt allerdings zu spät. Ich habe weiter gesucht und die Events RowsAdded und RowsRemoved gefunden. Ich denke, damit bringe ich es hin.
Grüße
Regenfreund
Hallo,
ich bin bisher nur als Leser aktiv gewesen und habe eigentlich immer was gefunden. Jetzt bin ich leider ein wenig hilflos...
Hier mein Problem: ich habe in meiner Anwendung mehrere Listen die über passende Bindingsources an DataGridViews gebunden sind. Hinzufügen und entfernen von Elementen klappt alles wunderbar.
Eine Viewansicht enthält eine Button-Spalte, über die ich eine wichtige Aktion auslöse. Dummerweise wird immer dann, wenn ein neues Listenelement per AddNew angehängt wird, auch diese neue Zeile selektiert. Und dann kann es passieren, dass mein wichtiger Button aus dem Blick gerät.
Ich habe bereits zahlreiche Versuche gemacht, den Event abzufangen, zu unterdrücken bzw. die vorher selektierte Zeile zu setzen. Irgendwie stelle ich mich ungeschickt an.
Ein kleiner Screenshot verdeutlich vielleicht mein Problem. Links sind die gestarteten Fahrer bei einem Einzelzeitfahren. Klickt man auf die Startnummer wird die Zeit genommen und der Fahrer wandert in die Finisherliste nach rechts.
Hat jemand eine spntane Idee, wie ich bei AddNew unterdrücken kann, dass neu selektiert wird?
Danke
Regenfreund