Forum: PC-Programmierung C# Vorgehensweise Windows-Forms Anwendung


von Schlumpf (Gast)


Lesenswert?

Moin,

ich würde gerne ein Projekt in C# schreiben, was ich vorher in ähnlichen 
Formen nur in C programmiert habe. C# ist etwas neu für mich, habe mich 
aber schon einigermaßen in die Materie eingelesen bzw. Übungsprogramme 
erstellt.

Im Prinzip soll es eine Form mit mehreren Buttons und Textfeldern geben. 
In C würde ich aus Gründen der Übersichtlichkeit eine C-Datei mit allen 
Buttpn-klick Funktionen ersellen, und in jeweils eine andere Datei 
einzelne Funktionen, die von der Eventfunktion aufgerufen werden. So 
erstelle ich mir immer mehrere Dateien, die relativ kurz sind, dafür 
behalte ich durch ihre eindeutige Benennung aber die Übersicht.

Wie würde man am besten in C# arbeiten? Da ja die Steuerelemente nur in 
der Klasse bekannt sind, kann ich (und soll man ja auch) nicht so 
einfach aus einer anderen Klasse darauf zugreifen. Würdet ihr die 
eigentlichen Methoden in eine eigene Klasse schreiben? Standardmäßig 
wurde für die Form die Klasse "partial class Form1" erstellt. D.h. ich 
könnte auch einfach in mehreren Dateien diese Klasse erweitern, oder?

Ich wäre über ein paar Tipps über die übliche Vorgehensweise sehr 
dankbar ;-)

von Martin K. (modin)


Lesenswert?

Schlumpf schrieb:
> ich würde gerne ein Projekt in C# schreiben, was ich vorher in ähnlichen
> Formen nur in C programmiert habe.

Mal ehrlich,
Du kannst C, also kannst Du hochdeutsch.

Warum willst Du nun hessischen Dialekt lernen, den keine Sau versteht 
und ein eingefleischter C,C++ Programmierer niemals nachvollziehen kann.

C# ist und bleibt M$ Müll. Bleib bei C und denke mal an die "signal and 
slot" Technik.
Biblioteken dazu: boost oder Qt

Gibt bestimmt noch mehr.
Gruß Martin

von Sunny (Gast)


Lesenswert?

C ist nicht gleich C.
Wenn das ein Windows Programm sein soll dann geht das mit Visual C++, 
MFC, aber mit C# ist das halt nicht zu machen, weil es nicht dafür 
geeignet ist.

von Schlumpfine (Gast)


Lesenswert?

Deine Fragen sind etwas allgemein gehalten. Wie immer kann man leicht 
"es kommt darauf an" als Antwort geben. Worauf läuft deine Software? Ein 
paar mehr Details wären interessant.

von Karl (Gast)


Lesenswert?

@Sunny

wofür ist C# nicht geeignet?
Für ein Windows Programm?

von Schlumpfine (Gast)


Lesenswert?

Sunny schrieb:
> C ist nicht gleich C.
> Wenn das ein Windows Programm sein soll dann geht das mit Visual C++,
> MFC, aber mit C# ist das halt nicht zu machen, weil es nicht dafür
> geeignet ist.

Das ist nun wirklich falsch. Würde behaupten, C# eignet sich eigentlich 
nur für Windows, oder will man wirklich unter Linux .NET proggen, wenn's 
besser geht?!

von Martin K. (modin)


Lesenswert?

Schlumpfine schrieb:
> oder will man wirklich unter Linux .NET proggen, wenn's
> besser geht?!

dieses Geschwür von M$ bleibt uns Gott sei Dank erspart.

Gruß Martin

von Schlumpf (Gast)


Lesenswert?

Also das Programm läuft ja wie gesagt unter Windows. Es stellt eine 
Schnittstelle zu einer SPS dar, die auch auf dem PC läuft. Es geht 
hauptsächlich darum, dem Bediener ein schönes Fenster zu gestalten, wo 
er Eingaben machen kann. Die Eingaben werden dann über Bibliotheken an 
die SPS weitergeleitet.

Ich bin auch nicht auf C# fixiert, es kann genauso auch C++ sein. Habe 
aber halt bisher nur C programmiert und auch nicht in Visual Studio. Ob 
es in C mit Windows-Forms dann gut geht, weiß ich nicht.
Wenn C++ für meine Anwendung geeigneter wäre, würde ich ggf. auch das 
nehmen.

Zur Plattform: Ist es nicht eigentlich einfacher ein C#-Programm unter 
Linux laufen zu lassen, als ein C++-Programm? Da gibt es doch Mono.... 
Aber das brauche ich momentan nicht ;-)

von Bauteilefummler (Gast)


Lesenswert?

Martin K. (modin) schwafelte

> C# ist und bleibt M$ Müll. Bleib bei C

> dieses Geschwür von M$ bleibt uns Gott sei Dank erspart.

Ah, ein Ideologe. Lass mich raten, ein eingefleischter Linuxer und MS 
Hasser versucht gerade seine Ideologie auf andere zu übertragen. Kann 
auch nicht anders sein. Typische Verhaltensweise der immer gleichen 
Clientel.

von Martin K. (modin)


Lesenswert?

Schlumpf schrieb:
> Ich bin auch nicht auf C# fixiert,

Dann lass es sein. Schau Dir mal das Qt Demo an.
Wenn Du in C oder C++ fit bist, behaupte ich, dass Du Null Probleme 
haben wirst, eine wunderschöne Oberfläche in Qt zu designen.

Geht schnell, ist einfach und lässt sich wunderbar mit C Sourcen 
verbinden.

Schlumpf schrieb:
> Zur Plattform: Ist es nicht eigentlich einfacher ein C#-Programm unter
> Linux laufen zu lassen, als ein C++-Programm? Da gibt es doch Mono....

Verkartel Dich da mal nicht.

Gruß Martin

von einfacher Antworter (Gast)


Lesenswert?

Komischerweise hat C# aber mehr von Java und VB als von C oder C++. Es 
ging wohl wirklich nur um einfachere Windows-Programmierung. Na ob das 
gelungen ist?

von Karl (Gast)


Lesenswert?

Schlumpfine schrieb:
>...
>
> Das ist nun wirklich falsch. Würde behaupten, C# eignet sich eigentlich
> nur für Windows, oder will man wirklich unter Linux .NET proggen, wenn's
> besser geht?!

So ähnlich hab ich es auch letztens bei einem Vortrag im Fach 
Programmieren formuliert, ohne dass der Dozent widersprochen hätte. Man 
kann zwar C# Programme auch für Linux und sogar Mac zum laufen bringen 
allerdings macht es selten Sinn.

Mono gibt es zwar, aber wie gesagt macht es selten Sinn. Ich würde es 
eher als Notfallösung sehen. Wenn dir kompatibilität mit anderen 
Systemen wichtig ist, rate ich von C# ab.

Wenn es eh ein Win Programm sein soll, kannst du mit WinForms relativ 
schnell ein brauchbares GUI zusammenklicken, aber es wundert mich, dass 
du das nicht beim erstellen der Übungsprogramme gemerkt hast.

von Bauteilefummler (Gast)


Lesenswert?

Karl (Gast) schrieb:

> Man
> kann zwar C# Programme auch für Linux und sogar Mac zum laufen bringen
> allerdings macht es selten Sinn.

Mit welcher Begründung denn?

> Mono gibt es zwar,

Und nicht erst seit gestern.

> aber wie gesagt macht es selten Sinn. Ich würde es
> eher als Notfallösung sehen.

Warum?

von Warhawk (Gast)


Lesenswert?

Hallo,

ich findes wieder mal genial wie hier versucht wird dem Thread-Ersteller 
zu helfen! Anstatt eine Antwort zugeben, wird erstmal auf C# und M$ 
geschimpft.

Um die Frage zu beantworten:

Im Normalfall trent man die Darstellung von der Anwendungslogik. Bei 
sehr kleinen Programmen "schmeist" man auch mal die Anwendungsloik mit 
in die Form-Klasse mit rein.

Was man auf jedenfall nicht mach ist von einer anderen Klasse aus auf 
die Steuerelemente durchzugreifen. Hier gehört eine Methode von der 
Form-Klasse dazwischen.

Grüße, Warhawk

von Karl (Gast)


Lesenswert?

Bauteilefummler schrieb:

> Mit welcher Begründung denn?

.net zu benutzen ist bei einem Win system verständlich, weil die sowieso 
inzwischen alle .net haben.
Bei einem Linux System muss man (in Form von Mono) die Virtuelle 
Maschine aber zusätzlich installieren, diesen Nachteil würde ich nur in 
Ausnahmesituation in kauf nehmen. Ist doch sinnvoller gleich etwas 
passendes zu nehmen.

von Christopher C. (Gast)


Lesenswert?

C# eignet sich hervoragend zur Windowsanwendungs Entwicklung! Wenn du 
noch nicht wirklich weißt, wie du dabei vorgehen sollst, empfehle ich 
dir einfach mal mit dem Visual C# Windows Forms Desinger zu arbeiten. Da 
bist du alle mal schneller. Falls du aber doch Interesse hast zu wissen, 
wie man das selbst macht. Schau dir einfach den Code an, den er 
produziert.

Martin K. schrieb:
> Warum willst Du nun hessischen Dialekt lernen, den keine Sau versteht
> und ein eingefleischter C,C++ Programmierer niemals nachvollziehen kann.
>
> C# ist und bleibt M$ Müll.

Typisch. Keine Ahnung von C# haben, aber kritisieren. Das scheint in 
unserer Gesellschaft schon Mode zu sein. Wer C# wirklich kennt, weiß es 
zu schätzen. Ich mag C, allerdings verstehe ich nicht, weshalb die 
meisten Linuxfanatiker immer noch bei jedem sch*** C verwenden müssen. 
Ist das vielleicht die Ursache dafür, dass Linux immer noch so unnötig 
unhandlich ist? Es vergeht kein Tag in Linux, ohne dass die Konsole 
verwendet werden muss.

Zum Thema Mono:
Ich weiß nicht, warum Mono so verpöhnt ist. Es läuft eigentlich sehr gut 
und man hat dazu eine recht gute IDE (Monodevelop) mit ein paar Macken.

von Karl (Gast)


Lesenswert?

Christopher C. schrieb:
> Ich weiß nicht, warum Mono so verpöhnt ist. Es läuft eigentlich sehr gut
> und man hat dazu eine recht gute IDE (Monodevelop) mit ein paar Macken.

Wie oben geschrieben, mir misfällt die Grundidee .net unter Linux zu 
benutzen. Ich finde es super, dass sich leute gefunden haben, dies 
möglich zu machen aber ich würde es nur nutzen, wenn ich beispielsweise 
ein komplettes Programm in C# habe und es nun unerwartet unter Linux 
brauche.

Ich muss Mono allerdings zugestehen, dass damit 2 Programme entwickelt 
wurden, die für sich sprechen:
Sims 3 und Unity3D

von Schlumpf (Gast)


Lesenswert?

Okay, dieser Thread scheint für mich leider keinen großen Sinn mehr zu 
ergeben. Ich probiere einfach in C# weiter herum, un werde irgendwie 
schon den Fehler finden, den ich in einem anderem Thread heute gepostet 
habe.
Trotzdem danke an diejenigen, die helfen wollten.

von Bauteilefummler (Gast)


Lesenswert?

Karl (Gast) schrieb:

> .net zu benutzen ist bei einem Win system verständlich, weil die sowieso
> inzwischen alle .net haben.
> Bei einem Linux System muss man (in Form von Mono) die Virtuelle
> Maschine aber zusätzlich installieren, diesen Nachteil würde ich nur in
> Ausnahmesituation in kauf nehmen. Ist doch sinnvoller gleich etwas
> passendes zu nehmen.

Ob man das Framework nun extra installiert oder nicht spielt doch 
überhaupt keine Rolle mehr heutzutage. Das kostet dich ein kurzes 
Online-Update aus dem Repositories (bei Linux) und wird genauso 
gehandhabt wie die sonstige Pflege und Wartung der Installationen. Bei 
Anwenderprogrammen wird genauso das Update gezogen nach der 
Erstinstallation und die SW am laufen gehalten. Irgendwelche 
Laufzeitbibliotheken wird man immer mal nachinstallieren müsen. Unter 
Win gibt es default auch kein QT. Na und?! Dann wird es eben 
installiert. Spielt überhaupt keine Rolle. Oder nimm ein Lazarus. Das 
muss auch extra installiert werden. OpenOffice fällt auch nicht vom 
Himmel. Man hat es halt zu installieren wenn man entsprechende Dateien 
sich auch nur anschauen oder gar bearbeiten möchte.

Warum soll man sich die ganzen dirty Pitfalls im Zeigerhandling bei C++ 
freiwillig antun, wenn man mit C# das gleiche erreichen kann? .NET hat 
eine wunderbare Garbage-Collection, die einem einen Großteil an eigenen 
Programmierfehlern schon mal erspart und zudem sehr schöne kostenfreie 
IDE mit den Express Versionen und C# ist die ideale Programmiersprache 
dafür mit nun mehr 10-jährigem bestehen und stetiger Weiterentwicklung 
seitens MS. Was will man eigentlich noch mehr???

von Martin K. (modin)


Lesenswert?

Christopher C. schrieb:
> Typisch. Keine Ahnung von C# haben, aber kritisieren. Das scheint in
> unserer Gesellschaft schon Mode zu sein.

Sorry, da hast Du mich gewaltig missverstanden. Ich kenne diese Sprache.

Ich wollte aber kein Buchautor werden.D.h mir sind die ganzen Aufrufe 
viel zu lang.

Ich liebe meine kurzen Befehle und garantiere Dir, Dich 
geschwindigkeitsmäßig auf jeder Platform zu schlagen.

Gruß Martin

von Christopher C. (Gast)


Lesenswert?

Martin K. schrieb:
> Ich liebe meine kurzen Befehle und garantiere Dir, Dich
> geschwindigkeitsmäßig auf jeder Platform zu schlagen.

Die Du erst einmal mühsam zusammen schreiben musstest. Ich kenne das, 
ich hab mir selbst ein Framework für C geschrieben. Wobei C# schon 
längst ein ausgereiftes und extrem umfangreiches besitzt. Also warum 
denn schon wieder das Rad neu erfinden?

von Thomas (Gast)


Lesenswert?

> Ich liebe meine kurzen Befehle und garantiere Dir, Dich
> geschwindigkeitsmäßig auf jeder Platform zu schlagen.

Ok, Christopher, nimmst du die Herausforderung an?

Ich werde hier um punkt 19:30 eine Aufgabe veröffentlichen.
Es wird ein kleines Spiel mit grafischer Oberfläche sein.

Zeitaufwand: etwa 1h
Schwierigkeitsgrad: mittel bis niedrig

Christopher nimmt Visual Studio .NET mit C#.

Martin, für welche Entwicklungsumgebung / Framework entscheidest du 
dich?

von Martin K. (modin)


Lesenswert?

Christopher C. schrieb:
> Die Du erst einmal mühsam zusammen schreiben musstest.

Selbst wenn. Kennst Du Qt?
Eine sehr umfangreiche Bibliotek, aber nicht so überladen, wie das M$ 
Zeug's.

Ausserdem sehr Platform-freundlich.

Gruß Martin

von Bauteilefummler (Gast)


Lesenswert?

@ Thomas (Gast)

Aber sonst habt ihr wohl nix besseres zu tun oder?!

Leute, Leute

von Martin K. (modin)


Lesenswert?

Thomas schrieb:
> Martin, für welche Entwicklungsumgebung / Framework entscheidest du
> dich?

Qt-Creator und was alles dazu gehört.

Gruß Martin

von Christopher C. (Gast)


Lesenswert?

Mensch was soll denn das? Weißt du was, ich glaub dir sogar. Gegen einen 
C-Guru hab ich keine Chance. Allerdings glaube ich, dass du gegen einen 
C#-Guru in Sachen Anwendungsentwicklung verlieren wirst. Es ist doch 
allgemein bekannt, dass C für die Betriebsystementwicklung gemacht 
worden ist. Also warum Low-Level, wenn man es nicht braucht? Damit man 
dann Speicherleks und weitere Dinge produzieren kann?

von Martin K. (modin)


Lesenswert?

Bauteilefummler schrieb:
> Aber sonst habt ihr wohl nix besseres zu tun oder?!

Nein, fummle Du weiter an Deinen Bauteilen herum.

Verbringe Dein weiteres Leben in der Anonymität und lass uns hier in 
Ruhe.

Gruß Martin

von Christopher C. (Gast)


Lesenswert?

Hochkomplexe Büro- und Verwaltungssoftware mit Zugriff auf Datenbanken, 
etc. will keiner mit C schreiben. Dafür sind solche Highlevelsprachen 
wie C# oder Java da.

von Bauteilefummler (Gast)


Lesenswert?

Martin K. (modin) schrieb:

Bauteilefummler schrieb:
>> Aber sonst habt ihr wohl nix besseres zu tun oder?!

> Nein, fummle Du weiter an Deinen Bauteilen herum.

Danke der Anmerkung, da bin ich auch gerade dran.

> Verbringe Dein weiteres Leben in der Anonymität und lass uns hier in
> Ruhe.

Solches Geschwafel wie das deine lässt man lieber nicht unkommentiert 
hier durchgehen, sonst nehmen sich andere daran noch ein schlechtes 
Beispiel, verstehst?!

Aber du wirst mit der Zeit vielleicht auch noch etwas schlauer werden.

von Martin K. (modin)


Lesenswert?

Christopher C. schrieb:
> Mensch was soll denn das? Weißt du was, ich glaub dir sogar. Gegen einen
> C-Guru hab ich keine Chance. Allerdings glaube ich, dass du gegen einen
> C#-Guru in Sachen Anwendungsentwicklung verlieren wirst.

Da gebe ich Dir vollkommen Recht. Aber in der Effizienz werde wohl ich 
gewinnen. Ich habe selbst schon zwei identische Programme geschrieben.
(.NET und Qt)

Schlumpf schrieb:
> Im Prinzip soll es eine Form mit mehreren Buttons und Textfeldern geben.
> In C würde ich aus Gründen der Übersichtlichkeit eine C-Datei mit allen
> Buttpn-klick Funktionen ersellen,

Ich will Dich ja nicht überreden, sondern nur darauf hinweisen, dass es 
durchaus bessere Alternativen gibt.

Christopher C. schrieb:
> Hochkomplexe Büro- und Verwaltungssoftware mit Zugriff auf Datenbanken,
> etc. will keiner mit C schreiben. Dafür sind solche Highlevelsprachen
> wie C# oder Java da.

Davon habe ich nie gesprochen.

Gruß Martin

von ... (Gast)


Lesenswert?

Schlumpf schrieb:
> Wie würde man am besten in C# arbeiten? Da ja die Steuerelemente nur in
> der Klasse bekannt sind, kann ich (und soll man ja auch) nicht so
> einfach aus einer anderen Klasse darauf zugreifen. Würdet ihr die
> eigentlichen Methoden in eine eigene Klasse schreiben? Standardmäßig
> wurde für die Form die Klasse "partial class Form1" erstellt. D.h. ich
> könnte auch einfach in mehreren Dateien diese Klasse erweitern, oder?
>
> Ich wäre über ein paar Tipps über die übliche Vorgehensweise sehr
> dankbar ;-)

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Los gehts!

von Christopher C. (Gast)


Lesenswert?

So langsam glaube ich, dass Thomas hier einen Krieg anzetteln will :).

Martin K. schrieb:
> Christopher C. schrieb:
>> Mensch was soll denn das? Weißt du was, ich glaub dir sogar. Gegen einen
>> C-Guru hab ich keine Chance. Allerdings glaube ich, dass du gegen einen
>> C#-Guru in Sachen Anwendungsentwicklung verlieren wirst.
>
> Da gebe ich Dir vollkommen Recht. Aber in der Effizienz werde wohl ich
> gewinnen. Ich habe selbst schon zwei identische Programme geschrieben.
> (.NET und Qt)

Keine Frage.

Martin K. schrieb:
> Christopher C. schrieb:
>> Hochkomplexe Büro- und Verwaltungssoftware mit Zugriff auf Datenbanken,
>> etc. will keiner mit C schreiben. Dafür sind solche Highlevelsprachen
>> wie C# oder Java da.
>
> Davon habe ich nie gesprochen.

Damit wollte ich nur ausdrücken, dass solche Sprachen durchaus ihre 
Existensberechtigung haben.

von Max W. (max96)


Lesenswert?

Die .Net Sprachen sind klasse um mal schnell eine schöne GUI zu zaubern, 
Qt dauert da doch ein wenig länger. Ausserdem muss man sich doch im 
Zeitalter der Mehrkern CPU's nichtmehr die Mühe machen extrem 
geschwindigkeitsoptimierten Code zu schreiben. Jetzt gleich einen 
Wettbewerb draus zu machen finde ich schon etwas übertrieben.

von Thomas (Gast)


Lesenswert?

> Jetzt gleich einen Wettbewerb draus zu machen finde ich schon etwas
> übertrieben.

Hey, das ist jetzt die einmalige Chance ein für alle mal zu klären 
welches die bessere Programmiersprache ist: C# oder C++. Qt oder .NET.

Überleg noch nur einmal wie viel unnötige Diskussion uns dadurch in 
Zukunft erspart bleibt. Nie wieder Flamewars zu diesem Thema, keine C# / 
C++ Trolle mehr!

Nee, das muss man ja nicht erst nehmen, ist aber doch ne nette 
Knobelaufgabe für nen Sonntag Abend. Im Fernsehn kommt eh nichts, außer 
Johnny Cash vielleicht.

von Bauteilefummler (Gast)


Lesenswert?

> Hey, das ist jetzt die einmalige Chance ein für alle mal zu klären
> welches die bessere Programmiersprache ist: C# oder C++. Qt oder .NET.

Dann sieh zu, dass du deine Hausaufgabe mal fein selber löst. Dann 
weißte auch bescheid. ;)

von Christopher C. (Gast)


Lesenswert?

Aber eines muss Dir lassen, is ne coole Aufgabe. Ich glaub die mach ich 
mal demnächst ;).

von Thomas (Gast)


Lesenswert?

> Ich glaub die mach ich mal demnächst ;).
Prima, dann stell das Ergebnis doch mal hier rein.

Hat jemand Lust eine ASCI Version zu bauen? ;)

von Borislav B. (boris_b)


Lesenswert?

Nutzer wie Martin K. sollte man ganz schnell sperren. Insbesondere nach 
seinem ersten Kommentar hier im Thread.

Wer absichtlich so einen Müll verzapft, nur um irgendeine fanatische 
Programmiersprachen-Affinität auszuleben schadet der Community immens. 
Einsteiger, wie der TO werden dadurch bestenfalls verwirrt.

Ist es so schwer eine objektive Meinung bezüglich Programmiersprachen 
und Frameworks zu vertreten? Echt traurig...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.