Zum Inhalt springen

TDM

Mitglieder
  • Gesamte Inhalte

    1804
  • Benutzer seit

  • Letzter Besuch

Beiträge von TDM

  1. Warum suchst du nicht einfach das Verzeichnis deiner Exe(dll) und gehst dann über den relativen Pfad?

    Dann hast du das Problem nicht...

    Anmerkung: Batchdateien zur Programmausführung müffeln. :floet:

  2. In der gleichen Solution hab ich ein WindowsForms-Projekt.

    Da liegt das Problem.

    Ich nahm an, dass Windows-Forms und WPF im gleichen Projekt sind.

    Sieht aber bei dem Screenshot nicht so aus. Folglich brauchst du in "WinFormsApplication" noch einen Verweiß (Reference) auf WPFApplication. Damit die Klassen des WPF-Projekts verwendbar werden.

  3. public void cmd_neu_Click(object sender, EventArgs e)
    
    {
    
    }
    
    
    cmd_neu_Click();
    cmd_neu_Click(); wird natürlich später in ner anderen funktion benutzt object sender, EventArgs e: waren schon in der Klammer
    Das ist ja auch ein Klickereignis von der Oberfläche. Das wird automatisch generiert. Warum willst du einen Klick simulieren? Aufrufen kannst du das mit
    cmd_neu_Click(null, EventArgs.Empty);

    Aber wie gesagt, ich seh den Sinn eines simulierten Klicks nicht.

    [Editerle]

    Wenn du die Funktion später benutzen willst, dann ruf doch einfach eine parameterlose Funktion darin auf, die kannst du von jeder anderen Stelle wieder aufrufen.

  4. ja richtig sind parameter drin.

    Dann musst du sie auch mit Parametern aufrufen.

    Übernehme ich die parameter um aufzurufen, bekomme ich mehrere neue Fehlermeldungen.

    Welche?

    Lösche ich die Parameter, die waren übrigens automatisch drin, geht auch nix.

    Wie automatisch?

    Zeig doch einfach mal den Funktionskopf und den Aufruf.

  5. Genau genommen meinte ich es so:

    if (cmd_ol.Text == "X" && cmd_om.Text == "X" && cmd_or.Text == "" ||

    cmd_ur.Text == "X" && cmd_mr.Text == "X" && cmd_or.Text == "")

    soll halt keine variable prüfen sondern schauen ob der text der buttons x ist.

    Geht das so?

    eigentlich nimmt man zwar string.Equals, aber das geht schon.

    Und direkt noch ne Frage:

    In VB kann man ja mit Call ... () ne andere Funktion aufrufen, wie gehts das in C#?

    Hab gelesen das man es so macht:

    NameDerFunktion();

    dann bekommen ich aber diese Fehlermeldung:

    Keine Überladung für die pruefen-Methode nimmt 0 Argumente an

    Dann hat die Funktion wohl Parameter. Meistens zeigt die IDE die Parameter an, wenn man die runde geöffnete Klammer hinter den Methodennamen schreibt.

  6. Du setzt (Bedingung a != Bedingung B) && (Bedingung c != Bedingung d) Voraus.

    Nein.

    ...

    Ja...

    Der Vergleichsoperator == und das x haben gestört. Folglich nahm ich an, dass 4 unterschiedliche Werte auf den gleichen wert geprüft werden.

    Ich war mir nicht ganz sicher ob er

    (a == x && b == x) || (c == x && d == x)
    meinte, oder
    a == x && (b == x || c == x) && d == x

    Naja, ist Freitag und schon spät. :floet:

  7. Dabei möchte ich möglichst viel Multithreading nutzen um auf der höhe der Zeit zu leben^^

    Schlechte Idee, Multithreading nur dort, wo es nötig ist, alles andere macht das Programm zu kompliziert.

    1. (jedes) Objekt in C# (insbesondere Forms und WPF-Objekte) sind an sich ja Threads (stimmt das überhaupt)

    Nein.

    Ein int ist kein Thread.

    2. Wie kann ich z.B. Meine Anwendung Starten, den Benutzer verifizieren, und während dessen mein Hauptform (WPF- objekt z.B.) "im Hintergrund" laden (bzw. überall im Programm, so z.B. das "AdressenDetail-Form" im Hintergrund aufbauen, während man noch auf der Adressenliste ist, und erst wenn eine Adresse ausgewählt wurde (doppelklichEvent etwa) jenes mit Daten bestücken (wegen mir nur den Filterstring aufs Dataview-Objekt setzten) und dann rasch anzeigen (da das UI schon da ist) ?

    Schau dir mal diese Klasse an.

    3. Mir wären allgemeine Hinweise, links und Erfahrungen lieb, da ich a)Azubi bin (nicht sonderlich versiert), b)Mit WPF noch nicht wirklich gearbeitet habe (kleinere Beispiele und ein Buch zu WPF) und c)mich mit Multithreading nicht so gut auskenne.

    Multithreading ist böse, da du mit einem anderen Thread nicht die Oberfläche verändern darfst.

    Abhilfe schaffen hier Events. (INotifyPropertyChanged funktioniert wunderbar als Datacontext mit Bindung)

    Interessant in dem Zusammenhang ist auch lock.

    4.

    ist etwas in der Art ein guter Anfang, oder gibt es bessere/einfachere Möglichkeiten soetwas zu realisieren?

    Siehe 2.

  8. Steht in dem nicht nur der Text der auf dem Button drauf stehen soll?

    Nein, du kannst beliebig viel Kapseln.

    Du kannst auch einen Button in einen Button machen, das ist ja das schöne an WPF.

    Der Content ist nur meist auf ein Element beschränkt.

    
        <Button HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="WhiteSmoke" Width="100" Height="43" Margin="113.043,68,0,0" BorderBrush="#FF003C74">
    
            <Canvas>
    
                <Label Background="Black" Height="43" VerticalAlignment="Top" Width="100" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Name="ButtonBackground"/>
    
                <Label Background="Red" Height="33" VerticalAlignment="Top" Margin="5,5,0,0" Width="90" Opacity="0.5" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Name="Hintergrund"/>
    
                <Ellipse HorizontalAlignment="Left" VerticalAlignment="Top" Margin="5,5,0,0" Width="90" Height="17" Fill="LightBlue" Stroke="LightBlue" Opacity="0.6"/>
    
                <Ellipse HorizontalAlignment="Left" VerticalAlignment="Top" Margin="5,28,0,0" Width="90" Height="11" Fill="LimeGreen" Stroke="LimeGreen" Opacity="0.5"/>
    
                <Label Content="Press" Foreground="White" Height="43" VerticalAlignment="Top" Width="100" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Name="Button_Text"/>
    
            </Canvas>
    
        </Button>
    
    

    Musst das natürlich noch mit den Zahlen anpassen. (Bei mir sieht das verrutscht aus.)

  9. ArrayList ist aus System.Collections.

    Und bei den "alten" Collections brauch foreach Objekte, die einen Enumerator implementieren.

    Falsch. Foreach braucht immer ein IEnumerable-Object.

    DateTime implementiert IEnumerable nur nicht.

    Nix mit alt oder neu.

  10. Ich habe des öfteren gelesen, dass VB.Net und C#

    Klar. Ist ja gleiches Framework.

    C++ soll ja im großen und ganzen nicht so einfach sein wie C#, da es mehr auf C basiert.

    Stimmt. Es sei denn, du nimmst C++.Net, dann gilt wieder die Frameworkgleichheit. Und es ist relativ ähnlich. (Zeiger/Delegates gibts auch in VB.Net und C#)

    Was macht mehr Sinn? c++, c#, oder doch JAVA ?!

    Im Endeffekt kommt es hier wirklich auf das spätere Gebiet an.

    Da C# und Java von der Syntax her relativ gleich sind (Und folglich auch die Frameworkgeschichte von VB.Net/C++.Net behandelt), würd ich ehrlich gesagt mehr Java lernen. Da lernt man sauberen Code zu schreiben (damit dieser auch plattformunabhängig bleibt). Was folglich auch C#-/VB.Net-Code zu Gute kommt.

    Kannst natürlich auch gleich C# lernen. Das impliziert dann halt ein besseres Javaverständnis.

    Anmerkung:

    "Sprachen lernen" ist eh nicht das Wahre. Wenn man die Algorithmik versteht, dann kann man eh fast alles portieren.

  11. Du kannst dir auch einfach mal die Klasse DataTemplateSelector anschauen. Der DataContext deiner Contentseite gibt dann halt einfach eine IEnumerable zurück, in der ViewModels (DataContext) der einzelnen Subseiten stehen. Diese wiederum wird als Binding auf ein ItemsControl.ItemSource gesetzt und siehe da, dynamisches Laden.

  12. Keine Ahnung ob das mit VB funktioniert.

    Aber in C# kannste so etwas machen:

    
    try
    
    {
    
         DeineDatenbankVariable.Open();
    
         MessageBox.Show("Datenbank wurde geöffnet!");
    
    }
    
    catch (Exception)
    
    {                
    
         MessageBox.Show("Datenbank ist schon offen!");
    
    }

    Sowas geht zwar in C# (und VB), allerdings kannst du bei einer Exception nicht sagen, dass die Datenbank bereits geöffnet ist. Wenn du einen leeren/falschen Connectionstring angibst o.Ä. wird er auch ins catch springen, die Datenbank ist zu dem Zeitpunkt aber keines Wegs geöffnet.

    (Nur so als Hinweis, aber hast ja selber geschrieben, dass es keine gute Variante ist. :floet:)

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...