Autor Beitrag
Airmetz
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 20.09.10 09:06 
Ich habe meine Anwendung gestartet und nun merke ich, dass ich nachdem ich auf "button1" drücke
(indem der gesammte quelltext steht) nicht mehr die Form bewegen kann(schließen, verschieben).


ausblenden C#-Quelltext
1:
2:
3:
4:
 private void button1_Click(object sender, EventArgs e)
        {
          Gesammter quelltext
        }


Was mache ich falsch oder wo muss der quelltext hin?!

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 20.09.10 09:21 
Die Oberfläche friert ein weil er mit der Abarbeitung deiner Funktionalität beschäftigt ist.

Wenn du nicht willst das die Oberfläche einfrierst solltest du das ganze in einen anderen Thread (oder halt einfach einen Backgroundworker) auslagern.

Mal so nebenbei bemerkt sollte sich nicht der komplette funktionale Quelltext direkt in der Oberfläche befinden.

Für diesen Beitrag haben gedankt: Airmetz
Airmetz Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 20.09.10 10:10 
Anderen Thread klingt gut,
wie hat es ca auszusehen?
in einem Thread hätte ich eine endlosschleife und
in dem anderen ..?! :)
(Programmieranfänger :oops: )
Necaremus
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 203
Erhaltene Danke: 18

Win > XP, Vista, 7; Android 2.1
C# > VS '08,'10; Delphi7
BeitragVerfasst: Mo 20.09.10 10:41 
du kannst entweder nen backgroundworker (ist in den steuerelementen, so wie buttons, textbox etc.) auf deine Form ziehen und den code ins .DoWork packen.
aufrufen tust du ihn dann beim buttonclick via backgroundWorker.RunWorkerAsync();
du kannst auch noch dinge ausführen, wenn der backgraundworker fertig ist. das müsstest du dann im .RunWorkerCompleted event machen.

solltest du auf steuerelemente der form zugreifen wollen solltest du dies über invoke tun.

edit: alternativ kannst du auch nen eigenen Thread direkt im Programmcode erstellen... viele wege führen nach rom ;)

Für diesen Beitrag haben gedankt: Airmetz
Airmetz Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 20.09.10 11:42 
EmailTextBox1.Invoke(???);


wie hätte es denn auszusehen wenn ich eine textbox einfügen will?
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 20.09.10 11:54 
Wir sind nicht dafür da dir direkt alles hinzuschreiben.
Für dein ursprüngliches Problem habe ich dir entsprechende Lösungsmöglichkeiten genannt. Wenn du dich damit nicht auskennst hilft google oder ein Buch (oder openbook) bestimmt weiter. Wenn du damit dann Probleme hast helfen wir gerne weiter, allerdings musst du auch dein Problem genau beschreiben (Was geht nicht und warum? Welche Fehlermeldung kommt? Was wurde schon versucht? usw..)
Necaremus
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 203
Erhaltene Danke: 18

Win > XP, Vista, 7; Android 2.1
C# > VS '08,'10; Delphi7
BeitragVerfasst: Mo 20.09.10 14:11 
user profile iconAirmetz hat folgendes geschrieben Zum zitierten Posting springen:
EmailTextBox1.Invoke(???);


wie hätte es denn auszusehen wenn ich eine textbox einfügen will?


wenn du eine textbox wirklich einfügen willst musst du das denke ich im RunWorkerCompleted event machen, da du dort auch auf die form zugreifen kannst (, da selber thread).
habe es selber noch nie gemacht, bin selber noch recht neu beim proggen^^
ahjo, die werte, die du der textbox geben willst müsstest du in variablen speichern, auf die dein completed-event dann zugreifen kann.
würd wahrscheinlich ne List<Control> empfehlen...
dann musst du im DoWork die dinger einfach nur der list hinzufügen und im Completed kannst du einfach mit ner foreach durch die liste durchrattern.

meine lösung funktioniert vlt, ist aber höchstwahrscheinlich nicht die eleganteste...
also, falls wer anders noch was anderes sagt hör lieber auf den ;D