Zum Inhalt springen

JasonDelife

Mitglieder
  • Gesamte Inhalte

    82
  • Benutzer seit

  • Letzter Besuch

Beiträge von JasonDelife

  1. Du solltest MyProcedure() nicht als static deklarieren.

    Aber sei gewarnt: Die Single-Thread-Rule verbietet den Zugriff auf Steuerelemente aus Threads die nicht der GUI-Thread sind! Und du verstößt dagegen. Das wird nicht gut gehen.

    Alternativer Ansatz: Nimm einen BackgroundWorker, der die Berechnungen macht und nutze das ProgressChanged-Event, um die PictureBox zu bewegen, denn ProgressChanged wird autom. im GUI-Thread ausgeführt.

    Infos zum BgW hier: Übersicht über die BackgroundWorker-Komponente

    Grüße, JasonDelife.

  2. Doch, static ist in C# genauso verfügbar. Aber es ist nicht im Sinne der OOP. Es quasi die Quick&Dirty-Variante.

    Wenn du 20 Variablen hast, die du unter den Forms tauschen willst, dann ist wohl ein DTO gut (wurde schon genannt). Prinzipiell ist es aber so, dass bei Forms mit Dialog-Charakter (Eine Form poppt auf, man gibt was ein, sie geht weg und es geht im Hauptfenster weiter) so macht, dass die Hauptform dem Dialog alles per Konstruktor übergibt und dann per ShowDialog() angezeigt wird. Die Eingaben in TextBoxen usw. lassen sich dann abfragen, indem man in der 2. Form Properties definiert, die die nötigen Eingaben zurückgeben. DTOs sind meiner Meinung nach nur notwendig, wenn man zwei Forms auf gleichem Niveau hat. (Obwohl natürlich auch die Hauptform die Konstruktorparameter als kapselndes Objekt übergeben kann)

    Auch solltest du dir mal sprechendere Namen für die Forms / Controls überlegen.

    Grüße, JasonDelife.

  3. Die TextBox von Windows Forms ist ein Wrapper um die Win32-TextBox. Da öässt sich wohl nix ändern. Du müsstest eine eigene TextBox programmieren und dann die Hintergrundtransparenz erlauben und entsprechend implementieren.

    Grüße, JasonDelife.

  4. DoEvents() ist generell schlecht. Nachzulesen im geposteten Link. Dort wird auch ein Artikel verlinkt, der ein paar Probleme aufzeigt: jfo's coding : Keeping your UI Responsive and the Dangers of Application.DoEvents

    In dem Artikel wird auch die einzige Situation erläutert, wo DoEvents() ok ist: Wenn keine Message Pump läuft, was aber so gut wie nie der Fall ist. Aber sonst NIE. DoEvents() ist nicht dazu gedacht Multithreading abzuschaffen. Der BackgroundWorker bietet gute Möglichkeiten und mit Thread hat man komplette Kontrolle über das Geschehen. DoEvents() kann diese nicht ersetzen und ist auch nicht dazu gedacht (auch wenn man bei manchen MSDN-Artikeln wegen des übermäßigen DoEvents()-Gebrauch den Eindruck bekommt).

    Ich kann keinem DoEvents() verbieten, aber es soll keiner sagen können, dass er nicht gewarnt wurde :) .

    Grüße, JasonDelife.

  5. Eine Form ist immer so breit, das man die Buttons in der Titelleiste noch klicken kann. Ich bezweifle, dass diese mit 5 Pixel auskommen. IMHO ist außerdem der Rahmen nicht eingerechnet.

    Grüße, JasonDelife.

  6. @DFens Und die am besten noch vorgekaut...

    Nein, mal ernsthaft:

    1. Das ist das falsche Forum. C# hat nix mit C/C++ zu tun. Das gehört in .NET.

    2. Erwartest du eine fertige Lösung und genau das gibt es nicht. Wir leisten Hilfe, aber wir machen nicht deine Arbeit.

    @TDM Er sagte doch, dass er die UI im Designer hat. Ich vermute mal der Code hat (wenn überhaupt) erstmal nur die leeren Eventhandler vom Designer.

    Grüße, JasonDelife.

  7. Ganz einfach:

    
    byte[] myMethod()
    
    
    bedeutet, dass die Methode ein byte[]-Array zurückgibt. Bei dir steht aber nirgends return, also quittiert der Compiler das mit einer Fehlermeldung. Das return ist auch nicht nötig, da Arrays Objekte sind und by Reference übergeben werden. Der Parameter kann auch so aussehen:
    
    void myMethod(byte[b][][/b] array)
    
    

    Das macht keinen Unterschied. Laut Java-Konvention sollte er sogar so aussehen.

    Noch zwei Anmerkungen:

    1. Wieso 4x eine Zufallszahl von 0 bis 5? Wieso nicht einmal eine von 0 bis 20?

    2. Man sollte Random-Objekte nicht andauernd neu erzeugen. Das gibt dann "weniger" zufällige Zahlen (aufgrund des verwendeten Algorithmus).

    Grüße, JasonDelfie.

  8. Ich hätte das mit anonymen Klassen gemacht:

    
    // in main nur
    
    MainFrameGUI gui= new MainFrameGUI();
    
    
    class MainFrameGUI extends JFrame {
    
        private int x; // x und y als Klassenvariablen
    
        private int y; // sind nun allen Methoden zugänglich
    
        public MainFrameGUI() {
    
            // Nutze die Adapter-Klassen, um Dummy-Methoden zu vermeiden
    
            addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent e) {
    
                    x = e.getX();
    
                    y = e.getY();
    
                    // Kann nun z. B. direkt repaint() aufrufen
    
                }
    
            });
    
            // ...			
    
        }
    
        public void paint (Graphics g) {	   
    
            // kann auf x und y zugreifen
    
        }	
    
    
    }
    
    

    Grüße, JasonDelife.

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