Zum Inhalt springen

steinadler

Mitglieder
  • Gesamte Inhalte

    448
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von steinadler

  1. Hallo ihr, ich habe eine Klasse, welche von einer Checkbox erbt. In dieser möchte ich auch gern mit realisieren, dass, wenn ich die abgeleitete Klasse verwende, auch die Apperance auf "Button" gestellt wird. Ändere ich dann jedoch per Designer die Apperance auf "Normal", wird dies nach dem Kompilieren wieder entfernt. "Normal" scheint hier der Default-Wert zu sein. Daher wird im Designer bei "Normal" die Zeile einfach weggelassen. Hat jemand eine Idee, wie man das umgehen kann? Grüße steinadler
  2. Hallo, wie macht man denn so etwas, wie ich im Titel geschrieben habe? Woher weiß ich, welche Felder noch ungültige Daten enthalten? Im Moment habe ich Textboxen einfach an Variablen gebunden (schreibe ich einen Text in eine an int gebundene Textbox, wird das Feld rot). Danke Gruß Steinadler
  3. Hallo, ich habe einen Timer in einem Formular. Dieser Timer ruft zyklisch etwa so eine Methode auf: bool bTimerRun; OnTick() { if(bTimerRun) return; bTimerRun=true; MessageBox.Show("Test"); bTimerRun=false; } Die MessageBox wird nur einmal angezeigt und der Timer wird gleich im Keim erstickt. Prinzipiell funktioniert das, aber kommt da evtl. der GC oder die Runtime durcheinander? Der erste Methodenaufruf wird ja nach Bestätigen der MessageBox erst beendet. Über den Sinn obiger Methode brauchen wir nicht zu diskutieren, die ist nur als Anschauung gedacht. Grüße Steinadler
  4. Allerdings ist (zumindest bei Windows 7) die Ansicht unter "Netzwerk" sowie auch unter "Computer" anders.
  5. Danke für eure Antworten. @Pixie: Mit AutoGenerateColumns habe ich es im Moment gelöst, allerdings habe da auch viele Spalten, die mich nicht wirklich interessieren. Mein Form sieht so aus | TreeView | GridView | Im GridView wird das angezeigt, was im TreeView ausgewählt ist. Klickt man im TreeView auf einen Knoten der weitere Unterelemente enthält, soll etwas anderes im GridView angezeigt werden, als bei einem Unterelement was keine weiteren Unterelemente hat. Das ist von der Architektur m.E. nicht unbedingt falsch.
  6. Hallo ihr, ich habe ein DataGrid mit AutoGenerateColumns=False. Allerdings möchte ich darin verschiedene Objekttypen anzeigen, also mal ein Array von Typ a und mal ein Array von Typ b. Wie kann ich denn abhängig vom Arraytyp der ItemsSource die Columns festlegen?
  7. Ich eigentlich auch. Aber da muss man dann ja dem Grid alle Zeilen als RowDefinition hinzufügen und anschließend jedes Control mit Grid.Row u. Grid.Column versehen. Deshalb die Frage, ob es eventuell eleganter geht
  8. Hallo ihr, Für einen Dialog benötige ich oft eine Struktur, wo links ein Label ist und rechts ein zugehöriges Eingabefeld. Wie setzt man sowas in XAML am besten um? Bisher habe ich das mit einem Grid gemacht. Aber da muss ich, will ich eine weitere Zeile hinzufügen, erst eine neue Zeile erzeugen. Da ist auch das Verschieben einer Zeile umständlich. Mache ich es mit StackPanel (vertikal) u. untergeordneten StackPanels (horizontal), muss ich die Breite fix setzen, damit es bei allen Zeilen gleich aussieht - das ist auch Mist. Wie macht ihr sowas? Ich denke diese Darstellungsform ist ja nichts ungewöhnliches? Grüße Steinadler
  9. Hallo ihr, ist es möglich, in WPF einen Style propertyabhängig festzulegen? Ich habe für ein Label zwei Styles. Abhängig von einer Bool-Eigenschaft im ViewModel möchte ich dem Label einen davon zuweisen. Wie geht denn sowas? Grüße Steinadler
  10. steinadler

    WPF - Contextmenü

    Hallo, ich habe das einmal so gelöst: 1. Kontextmenüentrag 'Command'-Eigenschaft auf ein Command in der Codebehind-Datei gesetzt (dies muss dann ICommand implementieren, dazu gibts aber viele Dinge in verschiedenen Foren) 2. SelectedItem des Datagrid an eine Variable in der ViewModel-Klasse gebunden 3. das Command unter 1. besitzt eine Eigenschaft CanExecuted oder so ähnlich. Diese musst du implementieren und true zurückgeben, wenn die SelectedItem-Variable unter 2. nicht null ist Bei mir war es allerdings so, dass, außer am Anfang, IMMER eine Zeile ausgewählt war. Dazu gibts sicher eine Eigenschaft, die ich aber nicht gefunden habe. Mir kommts so vor, als ob wir mit diesem WPF wieder in Richtung MFC gehen.
  11. Hallo ihr, ich möchte den Style eines TabItem gern abhängig von einer Bool-Variable im ViewModel ändern. Wie macht man denn sowas am besten? So hier habe ich das probiert, aber das funktioniert so nicht. <TabItem Header="Fail" Height="50" Margin="-2,70,-5,-70" Name="tabItem140" Width="100"> <TabItem.Triggers> <DataTrigger Binding="IsError" Value="True"> <Setter Property="Style" Value="{StaticResource STYLE_ERROR}"></Setter> </DataTrigger> <DataTrigger Binding="IsError" Value="False"> <Setter Property="Style" Value="{StaticResource STYLE_NORMAL}"></Setter> </DataTrigger> </TabItem.Triggers> </TabItem> [/PHP] Danke
  12. steinadler

    Mvvm

    Okay, danke erstmal für die Antworten. So langsam versteh ich das. Werden soll es WPF. Ich wollte eben nur erst die empfohlene Herangehensweise verstehen und auf meine tiefer liegende Softwarestruktur abbilden können.
  13. steinadler

    Mvvm

    Hallo ihr, ich habe mich jetzt mal mit MVVM beschäftigt. Simples Beispiel: ich habe einen Button und wenn ich diesen betätige, soll ein Ablauf in einer Maschine gestartet werden. Dafür habe ich sagen wir mal 10 Klassen (Statemachines) die zusammen eine Maschine abbilden und jeweils einen Status haben. In der "View" plaziere ich den Button. Im ViewModel lege ich für jeden StateMachine-Status eine Eigenschaft an, welche die Daten für die View verfügbar macht. Aber was ist das Model??? Ist das der ganze komplette Unterbau mit, in meinem Fall, allen enthaltenen Statemachines? Oder setzt das MVVM-Pattern erst dort oben drauf? Ich habe mir zwar viele Artikel durchgelesen, doch bin ich mir nicht sicher, ob ich wirklich auf dem richtigen Weg bin?
  14. ... von einem Gerät bekomme ich eine Statusmeldung (Byte-Array), welche ich in eine .Net-Struktur umlagern möchte. Habe das jetzt mit Marshal.PtrToStructure(...) probiert und das funktioniert auch soweit. Allerdings muss ich dann zwischen Little-/Big-Endian umstellen. Und da hab ich noch keine vernünftige Lösung gefunden. Mein Ansatz war jetzt einfach in einer Struktur die Statusproperties zu implementieren und Referenzen darauf dann zusammen mit dem Byteindex/BitIndex im Bytearray in einer Liste zu verwalten. Anschließend dann per Methode die Liste abklappern und das Bytearray auseinander nehmen. Allerdings mangelt es da an Referenzen auf die Statusproperties.
  15. Hallo, ich habe in einer Klasse n Variablen verschiedenen Typs. Diese möchte ich in einer bestimmten Reihenfolge bearbeitet haben. Dazu dachte ich mir, ich lege eine Liste an, in die ich Referenzen auf die Variablen in der gewünschten Reihenfolge hinterlege. Aber blöderweise sind die Variablen ja Werttypen. Wie macht man sowas denn am klügsten?
  16. Du hast recht, es sind Testmethoden (hatte ich auch glaube irgendwo geschrieben). Die Methoden machen soetwas in der Art wie int.TryConvert(...). Meine aufrufende Methode soll, damit ich nicht zweimal den gleichen Code schreiben muss, per bool-Parameter einmal die übergebenen Parameter auf Korrektheit testen und zum anderen die ausgelesenen Werte klasseninternen Variablen zuweisen. Treten während irgendeiner Konvertierung Fehler auf, werden diese in eine Liste geschrieben, welche ich nachher anzeigen möchte. Rufe ich die Methode mit der Funktion 'Werte zuweisen' auf, interessiert mich die Liste nicht, sondern der erste aufgetretene Fehler. Aber jetzt, wenn ich das so schreibe, fällt mir auf, dass ich ja einfach den Wert aus der Liste nehmen kann...
  17. Hallo ihr, folgendes möchte ich machen: Eine Methode mehrfach nacheinander mit jedoch unterschiedlichen Parameter ausführen. Allerdings möchte ich irgendwie feststellen, ob einer dieser Aufrufe einen fehlerhaften Rückgabewert hat (Rückgabewert ist ein Objekt einer Klasse). Diese Prüfung muss ich aber für alle Aufrufe ausführen - ich kann nicht einfach sagen "return irgendwas"; Also etwa so: MyErrorClass[] error = new MyErrorClass[5]; error[0] = methode(5, 2, 3); error[1] = methode(5, 16, 3); error[2] = methode(5, 27, 3); error[3] = methode(5, 2, 3); error[4] = methode(5, 2, 1); int i; for(i=0; i<error.Length; i++) { if(error[i] != null) break; } return error[i]; // erster aufgetretener Fehler Diese Methodenaufrufe sind so eine Art Prüfungsmethoden der übergebenen Parameter. Hat da jemand eine elegante Möglichkeit für sowas auf Lager?
  18. Hallo ihr, ich muss mich nun auch an WPF rantasten. Ich hätte da mal ne grundlegende Frage: Ich habe in meiner Softwarestruktur verschiedene Klassenhierarchien mit verschiedenen Eigenschaften. Wie zeig ich diese am besten in einem Formular an? Muss ich da den Umweg über eine spezielle "Daten-Klasse" für diese Formular gehen? Oder greif ich einfach auf meine Eigenschaften die ohnehin schon in den Klasseninstanzen existieren zu? Bei der ersten Variante müsste ich sämtliche Variablen dann irgendwie an meine Instanzen durchreichen. Bei der zweiten Variante müsste ich im XAML halt sehr tief in meine Programmstruktur rein gehen. Wie macht man sowas denn am besten?
  19. Ich versteh das nicht: wenn ich das UserControl im Konstruktor hinzufüge, sind die Scrollbars da. public Form1() { InitializeComponent(); this.c1 = new UserControl1(); this.c1.Location = new System.Drawing.Point(4, 4); this.c1.Name = "userControlc1"; this.c1.Size = new System.Drawing.Size(150, 150); this.c1.TabIndex = 0; panel1.Controls.Add(c1); } private void button1_Click(object sender, EventArgs e) { //panel1.Controls.Add(c1); } Mach ich das im Button_Click-Ereignis, sind die Scrollbars nach Betätigen des Buttons nicht vorhanden. public Form1() { InitializeComponent(); this.c1 = new UserControl1(); this.c1.Location = new System.Drawing.Point(4, 4); this.c1.Name = "userControlc1"; this.c1.Size = new System.Drawing.Size(150, 150); this.c1.TabIndex = 0; //panel1.Controls.Add(c1); } private void button1_Click(object sender, EventArgs e) { panel1.Controls.Add(c1); } Das UserControl prinzipiell ist aber da, ich sehe den Button den das enthält. Nur eben die Scrollbars fehlen. Kann vielleicht mal jemand testen, ob das ein generelles Problem ist? Ich hab das schon an zwei Rechnern festgestellt.
  20. Sonst hab ichs immer so gemacht: public partial class Form1 : Form { UserControl1 c1, c2; public Form1() { InitializeComponent(); this.c1 = new UserControl1(); this.c1.Location = new System.Drawing.Point(4, 4); this.c1.Name = "userControlc1"; this.c1.Size = new System.Drawing.Size(150, 150); this.c1.TabIndex = 0; this.c2 = new UserControl1(); this.c2.Location = new System.Drawing.Point(4, 4); this.c2.Name = "userControlc1"; this.c2.Size = new System.Drawing.Size(150, 150); this.c2.TabIndex = 0; } private void button1_Click(object sender, EventArgs e) { panel1.Controls.Clear(); panel1.Controls.Add(c1); } private void button2_Click(object sender, EventArgs e) { panel1.Controls.Clear(); panel1.Controls.Add(c2); } } damit sind die Scrollbars aber nur beim zweiten Anklicken des jeweiligen Buttons da.
  21. Ich mach m.E. nix anderes, als der Designer. Hier der Code: public partial class Form1 : Form { UserControl1 c1, c2; public Form1() { InitializeComponent(); this.SuspendLayout(); panel1.SuspendLayout(); this.c1 = new UserControl1(); this.c1.Location = new System.Drawing.Point(4, 4); this.c1.Name = "userControlc1"; this.c1.Size = new System.Drawing.Size(150, 150); this.c1.TabIndex = 0; this.c2 = new UserControl1(); this.c2.Location = new System.Drawing.Point(4, 4); this.c2.Name = "userControlc1"; this.c2.Size = new System.Drawing.Size(150, 150); this.c2.TabIndex = 0; panel1.ResumeLayout(false); this.ResumeLayout(false); } private void button1_Click(object sender, EventArgs e) { this.SuspendLayout(); panel1.SuspendLayout(); panel1.Controls.Clear(); panel1.Controls.Add(c1); panel1.ResumeLayout(false); this.ResumeLayout(false); } private void button2_Click(object sender, EventArgs e) { this.SuspendLayout(); panel1.SuspendLayout(); panel1.Controls.Clear(); panel1.Controls.Add(c2); panel1.ResumeLayout(false); this.ResumeLayout(false); } } UserControl1 ist ein normales UserControl mit einem Panel in dem AutoScrollMinSize auf 800*600 gesetzt ist.
  22. Hallo ihr Lieben, folgende Konstellation: Form1 - Panel (Panel1) - UserControl (Usercontrol1) - Panel (Panel2 - AutoScrollMinSize = 800;600) - zwei Buttons, einer oben, einer ganz unten ziehe ich das UserControl per Designer in das Panel1 sind zur Laufzeit beide Scrollbars in Panel2 da. Dann habe ich folgendes gemacht: 1. im Code zwei UserControls vom Typ UserControl1 angelegt 2. zwei Buttons auf Form1 gezogen 3. in den Button-Click-Ereignissen jeweils das Panel geleert und ein UserControl dem Panel1 hinzugefügt. Die Umschaltung funktioniert auch soweit, allerdings werden beim ersten Reinladen des UserControls die Scrollbars nicht angezeigt (die Eigenschaft HorizontalScrollbar z.B. steht zwar auf Enabled, jedoch ist Visible=false). Wenn ich nochmal auf den Button gehe, und das UserControl ein zweites mal ins Panel lade, dann sind auch die Scrollbars da. Was mach ich denn da falsch? Hat jemand ne Idee? Ich möchte softwaregesteuert in einem Panel Ansichten umschalten.
  23. Danke für den Link... sehr aufschlussreich. Danke euch allen für eure Bemühungen.
  24. Ja das ist soweit klar... internal in C# besagt, dass die Methode nur innerhalb der Assembly, also DLL/Datei etc. entspricht. Direkt zugreifen würde ja bedeuten, dass man dann von überall aus zugreifen kann und im obigen Beispiel das Parent jeder ändern könnte.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...