BlackBoard » Sonstiges » Bildung » C#: der BB-BilligRecher » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C#: der BB-BilligRecher
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Cpt.Miller Cpt.Miller ist männlich
BlackBoarder


Dabei seit: 14.08.2003
Beiträge: 644
Herkunft: Stuttgart

C#: der BB-BilligRecher       Zum Anfang der Seite springen

Willkommen zu meinem ersten Tutorial, konstruktive Kritik ist gewünscht fröhlich

Was bauen wir?
In diesem Tutorial wollen wir einen kleinen Taschenrechner mit GUI programmieren.
Der Taschenrechner wird in meiner Implementation nur addieren können, doch den Rest könnt ihr sicherlich ganz einfach selbst erweitern.

Also, was benötigen wir?
Das Microsoft .NET Framework
Eine Intigrierte Entwicklungsumgebung (IDE),
meine Empfehlung: SharpDevelop

Was sind diese komischen Programme?
Das .NET Framework ist ein neues Programmiermodell von Microsoft, dies benötigen wir damit wir .NET Anwendungen programmieren können. Wenn ihr mehr zu .NET wissen wollt solltet ihr google benutzen smile (gibt genug Informationen)

SharpDevelop ist eine IDE. Es ist für einen Programmierer um einiges Angenehmer in einer IDE zu programmieren als mit einem einfachen Texteditor.
Warum ist es viel gemütlicher? Ganz einfach: ihr habt alle Tools in einer Oberfläche vereint und könnt diese sehr einfach aufrufen (Debugger, kompilieren, ...)


1. SharpDevelop, wir erstellen ein neues 'Combine' (Projekt)

Nach der Installation von SharpDevelop, sollte es beim Starten des Programms so ungefähr aussehen:
+++ Bild konnte nicht geladen werden +++

Also, wir wollen unser erstes Combine (entspricht einem "Projekt"Augenzwinkern erstellen.
Datei --> Neu --> Combine

Ein neues Dialogfeld sollte erscheinen, was so aussehen sollte:
+++ Bild konnte nicht geladen werden +++
Programmiersprache: C#
Schablone: Windows-Anwendung
Name: BB-BilligRecher
Verzeichnis: X:\Hier\steht\der\Pfad\wo\das\Projekt\gespeichert\wird

Nun klicken wir auf Erstellen

[SharpDevelop generiert uns nun eine Programmdatei, die ein ganz billiges Form und eine vorlage für unser Programm ist]


2. Programmoberfläche (GUI) designen

Wir haben in SharpDevelop einen intigrierten Designer, wir wechseln auf ihn in dem wir (unterhalb des Programmcodes) auf Design klicken.

Dann sehen wir die Oberfläche des Programms, es ist noch leer.
Um es zu füllen, benutzen wir Windows.Forms (Eine Klasse des .NET Frameworks um einfach und effizient unter .NET Oberflächen zu erstellen)
Um Windows.Forms auszuwählen, klickt ihr auf Tools und dann auf Windows Forms.
+++ Bild konnte nicht geladen werden +++

Ihr designt euer Programm so, bis es ungefähr so aussieht:

+++ Bild konnte nicht geladen werden +++

Nun bearbeiten wir dir erstellen Objekte
textBox1 und textBox2 sind Textbox'en
Eigenschaften:
Text: ' ' [Leer, weil dies Eingabeboxen sind, also muss da nichts rein !]
label1 ist ein Label und dient der Ausgabe
Eigenschaften:
Text: ' ' [Leer, weil dies Eingabeboxen sind, also muss da nichts rein !]
button1 ist ein Button und startet die Rechnung
Eigenschaften:
Text: 'Ausführen' [Text des Buttons]
name: btnStart [der Name, der im Programmcode verwendet wird]

sodass es so ungefähr aussehen sollte:

+++ Bild konnte nicht geladen werden +++

3. Programmcode
Wir wollen nun das Programm coden, das ist allerdings nicht sonderlich schwer.

Mit einem Doppelklick im Designer auf "Ausführen" (bzw. btnStart) erstellt uns SharpDevelop einen Eventhandler mit dem Event clicked() , dieses Event wird ausgelöst, wenn der Benutzer auf btnStart klickt.

die Funktion sollte so aussehen

code:
1:
2:
3:
void BtnStartClick(object sender, System.EventArgs e)
{
}


Wir müssen jetzt erstmal, die Textboxen auslesen und in Variablen speichern.
Das 'Problem' dabei ist, das man mit String Werten (Zeichenketten, z.B. 'Ich bin cool') nicht rechnen kann, das heißt wir müssen sie umrechnen in Integer oder Decimal [Integer kann natürliche Zahlen aufnehmen, allerdings keine Kommazahlen; Decimal ist da besser geeigenet)

Wir nehmen mal der Einfachheit halber Decimal

Erstmal erstellen wir 2 decimal variablen (zahl1 und zahl2).

code:
1:
decimal zahl1,zahl2;


Dann lesen wir den Inhalt der Textboxen ein und konvertieren.

code:
1:
zahl1=Convert.ToDecimal(textBox1.Text);


Erklärung (obwohls billig ist smile ):

Convert ist eine Klasse, die zu Konvertierung zwischen verschiedenen Datentypen dient (wer hätte das gedacht?)

Mitglieder der Klasse sind z.B.:
code:
1:
2:
ToInt32(object value); [Objekt value in Integer32 konvertieren]
ToString(object value); [Objekt value in String konvertieren]

mehr bei MSDN.

also vollständig sieht die Funktion fürs erste so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
void BtnStartClick(object sender, System.EventArgs e)
{
decimal zahl1,zahl2;
zahl1=Convert.ToDecimal(textBox1.Text);
zahl2=Convert.ToDecimal(textBox2.Text);
}


Achja und als Objekt übergeben wir der ToDecimal() Funktion, den Inhalt der jeweiligen textBox (z.B. textBox1.Text);

Gut, wenn wir den Button nun anklicken würden, würde das Programm nur die Werte in Decimal umrechnen und speichern, mehr nicht.

Das ändern wir mit:

code:
1:
label1.Text=Convert.ToString(zahl1+zahl2);


Erklärung:
der Text von label1 wird mit der Summe aus zahl1 und zahl2 gefüllt.
Die Verwendung von Convert.ToString() ist notwendig, da label1 nur Strings anzeigen kann.

Insgesamt sollte es nun so aussehen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
void BtnStartClick(object sender, System.EventArgs e)
{
decimal zahl1,zahl2;
zahl1=Convert.ToDecimal(textBox1.Text);
zahl2=Convert.ToDecimal(textBox2.Text);
label1.Text=Convert.ToString(zahl1+zahl2);
}


Mit einem Druck auf F5 wird das Programm kompiliert und sollte ohne Fehler starten.

Hier nochmal der komplette Quellcode:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace BB_Tut
{
/// <summary>
/// Description of MainForm.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button btnStart;
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();

//
// TODO: Add constructor code after the InitializeComponent() call.
//
}

[STAThread]
public static void Main(string[] args)
{
Application.Run(new MainForm());
}

#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent() {
this.btnStart = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// btnStart
//
this.btnStart.Location = new System.Drawing.Point(80, 176);
this.btnStart.Name = "btnStart";
this.btnStart.Size = new System.Drawing.Size(136, 72);
this.btnStart.TabIndex = 2;
this.btnStart.Text = "Ausführen";
this.btnStart.Click += new System.EventHandler(this.BtnStartClick);
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(168, 40);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(96, 20);
this.textBox2.TabIndex = 1;
this.textBox2.Text = "";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(24, 40);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(88, 20);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "";
//
// label1
//
this.label1.Location = new System.Drawing.Point(48, 88);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(192, 64);
this.label1.TabIndex = 3;
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.label1);
this.Controls.Add(this.btnStart);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Name = "MainForm";
this.Text = "MainForm";
this.ResumeLayout(false);
}
#endregion
void BtnStartClick(object sender, System.EventArgs e)
{
decimal zahl1,zahl2;
zahl1=Convert.ToDecimal(textBox1.Text);
zahl2=Convert.ToDecimal(textBox2.Text);
label1.Text=Convert.ToString(zahl1+zahl2);
}

}
}


Anhang:

#region Windows Forms Designer generated code

In der IDE steht links neben dieser Zeile ein "-", womit man die 'Region' "Windows Designer generated Code" ausblenden kann, da dieser Code von dem Designer erstellt wird. [da sieht man mal, was der Designer alles an Arbeit abnimmt nicht wahr?]


Links:

Microsoft .NET 1.1 SDK Version (~120 MB)
[Ich empfehle die SDK Version, da die eine gute Dokumentation enthält, man kann allerdings auch DAS hier nehmen, 23 MB ]
SharpDevelop



Naja Kritik ist gewünscht, ich weiß ist alles etwas schlecht erklärt, fragen kläre ich jedoch gerne fröhlich

cya euer Captain C# [CptMiller großes Grinsen ]

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Cpt.Miller: 08.02.2005 21:07.

02.02.2005 19:19 Cpt.Miller ist offline E-Mail an Cpt.Miller senden Homepage von Cpt.Miller Beiträge von Cpt.Miller suchen
COCYHOK COCYHOK ist männlich
Verunsicherungsmakler


images/avatars/avatar-2037.png

Dabei seit: 04.10.2003
Beiträge: 1.079
Herkunft: CCCP

      Zum Anfang der Seite springen

Konstruktive Kritik. Also:
Am Anfang solltest du erstmal eine kurze Einleitung schreiben, worum es überhaupt geht. Was erzählst du hier eigentlich? Wofür und für wen soll das Tutorial gut sein? Was sind das für komische Programme, die man da braucht? Du fällst gleich mit der Tür ins Haus, ohne, dass ich weiß, was mich erwartet, was ich für Vorkenntnisse brauche und vor allem, für welche Plattform das Ganze ausgelegt ist.
Ich habs mir nicht durchgelesen, weils mich nicht interessiert. Schön ist, dass du Bilder verwendet hast. Aber am Ende machst du deine eigene Arbeit schlecht:
Zitat:
…ich weiß ist alles etwas schlecht erklärt…
Das kriegen die Leute dann schon selber mit, wenns wirklich so ist. Das musst du denen nicht auf die Nase binden.
Inhaltlich kann ich nichts dazu sagen. Das sind nur meine ersten negativen Kritikpunkte, die mir eingefallen sind. Wenn du da mal drüber nachdenkst, findet sich vielleicht auch einer, der aus dem Tutorial Wissen gewinnen kann.

__________________
Es ist eine Frage, ob wir nicht, wenn wir einen Mörder rädern, grade in den Fehler des Kindes verfallen, das den Stuhl schlägt, an dem es sich stößt.
Georg Christoph Lichtenberg, 18. Jahrhundert
05.02.2005 00:42 COCYHOK ist offline E-Mail an COCYHOK senden Homepage von COCYHOK Beiträge von COCYHOK suchen
Cpt.Miller Cpt.Miller ist männlich
BlackBoarder


Dabei seit: 14.08.2003
Beiträge: 644
Herkunft: Stuttgart

Themenstarter Thema begonnen von Cpt.Miller
      Zum Anfang der Seite springen

ja ich habs einfach runtergearbeitet... okay ich werds die tage verbessern. Danke smile
05.02.2005 02:04 Cpt.Miller ist offline E-Mail an Cpt.Miller senden Homepage von Cpt.Miller Beiträge von Cpt.Miller suchen
wheedcreed wheedcreed ist männlich
fuCKYou


images/avatars/avatar-201.gif

Dabei seit: 14.07.2003
Beiträge: 255
Herkunft: Da wo ich wohn

      Zum Anfang der Seite springen

Habs mir zwar auch nicht ganz durchgelesen, weils mich nicht sonderlich interessiert, aber ich find den Anfang hast du ziemlich gut und ausführlich beschrieben.
Wie gesagt, zum Rest kann ich nix sagen, weil ichs nicht gelesen hab.
Aber wenn du weiter so erklärst, finden sich bestimmt leute die es lesen, und dadurch lernen werden.

Weiter so Freude

__________________
~Memento Mori~
04.03.2005 00:52 wheedcreed ist offline E-Mail an wheedcreed senden Beiträge von wheedcreed suchen
Flamesword Flamesword ist männlich
BlackBoarder


images/avatars/avatar-2201.jpg

Dabei seit: 26.03.2004
Beiträge: 731
Herkunft: bei FFM

      Zum Anfang der Seite springen

Ich wollte nur anmerken, dass die Bilder nicht mehr funktionieren. Könntest du ja mal bei Zeiten reparieren.

__________________
Fick nicht die Welt, sondern schwänger sie!
Verteil positive und nicht negative Energie!
Teile mit den Leuten, schenk ihnen Liebe und veränder sie....
26.12.2006 16:08 Flamesword ist offline E-Mail an Flamesword senden Beiträge von Flamesword suchen
Cpt.Miller Cpt.Miller ist männlich
BlackBoarder


Dabei seit: 14.08.2003
Beiträge: 644
Herkunft: Stuttgart

Themenstarter Thema begonnen von Cpt.Miller
      Zum Anfang der Seite springen

Hui!
Sorry das ist ja schon sooo alt großes Grinsen . Ich hab die Bilder leider nicht mehr. Wenn ich mir das heute nochmal so durchlese, finde ich es ziemlich lustig, wie ich das ganze hier beschrieben habe Zunge raus .

Naja, wie gesagt, leider habe ich die Bilder nicht mehr, aber wenn ein "großes" Interesse an solchen Tutorials vorhanden ist, dann kann gerne wieder welche erstellen.
26.12.2006 19:04 Cpt.Miller ist offline E-Mail an Cpt.Miller senden Homepage von Cpt.Miller Beiträge von Cpt.Miller suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

http://portal.black-board.net Augenzwinkern

__________________
LAUFT! Ich spiele KILLERSPIELE!
27.12.2006 23:14 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Sonstiges » Bildung » C#: der BB-BilligRecher

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH