Information

  • Informatik
  • C#
  • Chaos

Zurreal.de

Fantasy Art ~ Phantastische Kunst

Fantasy Art ~ Phantastische Kunst

Please click on 'Switch Style'.
The style of the website will change.

Bitte klicken Sie auf 'Switch Style'.
Die Gestaltung der Webseite wird sich ändern.

Fehlermeldung


try
{ ... }
catch (Exception ex)
{
  MessageBox.Show(ex.Message);
}


try
{ ... }
catch
{
  MessageBox.Show("Fehler!");
}

Fehlermeldungen:

  1. programmgeneriert
  2. mit eigenem Text

Programm beenden


Application.Exit();


Message-Box


MessageBox.Show("Fehler!");


Strings verketten


txtBox.Text = "Ergebnis: " + Variable.ToString();

String-Bausteine mit + verketten.


StringBuilder


StringBuilder SB = new StringBuilder();

SB = SB.Append(Zahl.ToString() + "Alpha");
txtAusgabe.Text = SB.ToString();

StringBuilder:

Append
hinzufügen

Focus, Clear, Null


txtBox1.Focus();
txtBox2.Clear();
txtBox3.Text = null;
txtBox4.Text = txtBox5.Text = null;

Focus
Cursor wird platziert
Clear
String wird gelöscht
Null
String wird gelöscht

Neue Zeile


string NeueZeile = Environment.NewLine;
txtName.Text = "Text" + NeueZeile + "Text";

txtName.Text = "Text" + Environment.NewLine + "Text";

txtName.Text = "Text/n" + "Text";

Drei Möglichkeiten für einen Zeilenumbruch.


Try and Catch


  try { }
catch { }

Wenn der Versuch (try) misslingt, werden Gegenmaßnahmen (catch) ergriffen.


Konvertieren


double VarDub;
VarDub = Convert.ToDouble(txtEingabe.Text);

int VarInt;
VarInt = Convert.ToInt32(txtEingabe.Text);

double VarDub;
VarDub = Convert.ToInt32(txtEingabe.Text);

Konvertierung:
double to double, int to int32, double to int, usw.
Die Konvertierung eines Datentyps nochmals in denselbigen ist im Try-Block vorteilhaft.


int VarInt;
txtAusgabe.Text = VarInt.ToString();

VarInt wird für die Ausgabe in eine Textbox nach String konvertiert.


Cast


int Variable = 10;
(double)Variable;

double Variable = 22.22;
(int)Variable;

Casten:
Aus int wird double.
Aus double wird int.


Nachkommastellen, Währung


txtAusgabe.Text = ZahlDouble.ToString("F2");

("C")
Währung: Standardwert
("C", en-US)
Währung: Dollar
("C", de-DE)
Währung: Euro
("F2")
2 Nachkommastellen
("0.00")
2 Nachkommastellen
("0")
keine Nachkommastellen

Auffüllen mit führenden Nullen oder Zeichen


txtBox.Text = Zahl.ToString("D3");


txtBox.Text =
Zahl.ToString().PadLeft(3, ' ');

("D3")
Führende Nullen, bis zu 3 Stellen
PadLeft(3, '~')
Führende Zeichen, bis zu 3 Stellen

Variablen deklarieren


double VarA;
double VarB = 0;

int VarC = 1, VarD = 2;

bool Bool1 = false;
bool Bool2 = true;

string DerString = "Text";

Beim Erstellen einer Variablen kann ihr ein Initialwert zugewiesen werden.


ToolTip


ToolTip Trick17 = new ToolTip();
Trick17.SetToolTip(cmdEnde,"Ende");

ToolTip z.B. unter InitializeComponent(); einfügen.


Text zuweisen


cmdButton.Text = "Berechnen";
txtBox123.Text = "Ausgabe45";

Text kann geändert oder zugewiesen werden bei: Textbox, Button, Label, usw.


Rechen-Operatoren [1]
Operator Bedeutung
+ Addition
- Subtraktion
* Multiplikation
/ Division
% Modulo, Restwert-Division

Rechen-Operatoren [2]
Operator Kurzschreibweise ausführlich
+= A += B A = A + B
-= A -= B A = A - B
*= A *= B A = A * B
/= A /= B A = A / B
++ A++ A = A + 1
-- A-- A = A - 1

Operatoren
C Sharp Bedeutung Sonstiges
&& UND
Alle Bedingungen müssen wahr sein.
and
|| ODER
Eine oder mehrere Bedingungen müssen wahr sein.
or
== IST GLEICH
!= IST NICHT GLEICH <>
! NICHT
^ exklusives ODER
Nur eine Bedingung darf wahr sein.
xor
= Zuweisung
< kleiner als
<= kleiner-gleich als
> größer als
>= größer-gleich als

Modulo: Division mit Rest


int Variable1 = 17;
int Variable2 = 17;
Variable1 / 5;
Variable2 % 5;

17 / 5 = 3
weil die 5 dreimal in die 17 passt
17 % 5 = 2
weil die 5 dreimal in die 17 passt, und dabei ein Rest von 2 verbleibt

Goto: Zeilensprung


Wiederholung:
Zahl++;
goto Wiederholung;


ASCII Zeichen ausgeben


string Ausgabe = null;
int AsciiCode;
AsciiCode = 12;
Ausgabe = Convert.ToChar(AsciiCode);

Vorgang:

  • Zeichen und dessen Nummern-Code anhand der ASCII-Tabelle ermitteln.
  • Diese Nummer einer Int-Variablen zuweisen.
  • Int-Variable nach Char konvertieren: Convert.ToChar(AsciiCode)
  • Ausgabe

Zufallszahl


int Zufallszahl, Zaehler = 1;
string Ausgabe = null;
Random Zufall = new Random();

  while (Zaehler <= 5)
  {
    Zufallszahl = Zufall.Next(0, 10);
    Ausgabe += Zufallszahl.ToString();
    Zaehler = Zaehler + 1;
  }

txtAusgabe.Text = Ausgabe;

5-stellige Zufallszahl aus den Ziffern 0 bis 9.

Zufall.Next(0, 10)
Ziffern: 0 bis 9

  int Zufallszahl;
  Random Zufall = new Random();
  Zufallszahl = Zufall.Next(0, 5);

Eine einstellige Zufallszahl aus dem Zahlenraum: 0 bis 4.


Color: Farben zuweisen


/*Zuweisung an Textbox, Button, usw:*/
this.txtBox.ForeColor = System.Drawing.Color.Azure;
this.cmdButton.BackColor = System.Drawing.Color.HotPink;

/*Zuweisung an die Form selber:*/
this.ForeColor =
System.Drawing.Color.Azure;
this.BackColor =
System.Drawing.Color.MediumVioletRed;

ForeColor
Textfarbe
BackColor
Hintergrundfarbe

C# Color Name Table, getting all colors


Datentypen
Datentyp Info Größe (Bytes) Wert
sbyte positiv, negativ, ganzzahlig 1 -128 to 127
short Int16 positiv, negativ, ganzzahlig 2
int Int32 positiv, negativ, ganzzahlig 4
long Int64 positiv, negativ, ganzzahlig 8
float positiv, negativ, Gleitkomma 4
double positiv, negativ, Gleitkomma 8
decimal positiv, negativ, Gleitkomma 12
bool Boolescher Wert 1 true or false
char Ein einziges Zeichen 2
string Alphanumerische Zeichenfolge

Funktion mit Rückgabewert


private void Button_Click(...)
{
  int Zahl1 = 250,
      Zahl2 =  10,
      Zahl3 =  25,
      Ergebnis;
  Ergebnis = Auslagerung(Zahl1, Zahl2, Zahl3);
}


private int Auslagerung
(int WertA, int WertB, int WertC)
{
  int Berechnung = WertA / WertB * WertC;
  return Berechnung;
}

Sowohl Zahl1, Zahl2, Zahl3 und Ergebnis, als auch WertA, WertB, WertC und Berechnung sind eigenständige Variablen. Sie könnten auch dieselben Namen haben und wären doch unterschiedlich.

Um nun diese Variablen richtig zu übergeben, ist die genaue Reihenfolge derselbigen in den runden Klammern () entscheident: So werden diese zugeordnet.

Im Beispiel wird der Wert der Variable 'Berechnung' der Variable 'Ergebnis' mit 'return' zugewiesen.


Funktion: Void


void Order66()
  {
    ...
  }

private void cmdX_Click(...)
  {
    Order66();
  }

Wiederkehrender Code nur einmal schreiben.


Math


Quadrieren = Math.Pow(Zahl, 2);
WurzelZieh = Math.Sqrt(Zahl);
Rund3Stell = Math.Round(Zahl, 3);

Quadrieren: Math.Pow
Wurzel ziehen: Math.Sqrt
Runden: Math.Round


Form, Tools, Eigenschaften
Eigenschaft Bedeutung
Visible Un/Sichtbarkeit
Enabled De/Aktivierung
TextAlign Textausrichtung
ReadOnly Schreibschutz
TabStop Auswahl per Tabulator
TabIndex Auswahl Reihenfolge
MultiLine mehrzeilige TextBox
Location Platzierung
Size Größe, zB: 10;10
FormBorderStyle Fenster (nicht) vergrößern
Checked = true Radio-Button Vorauswahl
BorderStyle 3D, Single, None
ScrollBars Both
FlatStyle Flat (Buttons)

Zeichenkette auf Inhalt prüfen


if(String.IsNullOrEmpty(txtBox.Text))
{...}

Prüfen, ob leer
String.IsNullOrEmpty (txtBox.Text)
Prüfen, ob leer
txtBox.Text == ""
Prüfen, ob leer
txtBox.Text == null
Prüfen, ob voll
txtBox.Text != null
Prüfen, ob voll
!String.IsNullOrEmpty (txtBox.Text)

Datenfelder
Name mögliche Inhalte zur Laufzeit erweiterbar? untersch. Inhalte möglich?
Array Datentypen Nein Nein
ArrayList
List
Tuple Ja

Ist noch in Arbeit!

Datentypen:
int, string, bool, char, usw.


Listen


List<int> Liste01 = new List<int>();

Eine int-Liste. Weitere Datentypen sind möglich.


Liste01.Add(Variable);
Durchschnitt = (int)Liste01.Average();
txtBox.Text = string.Join(" ", Liste01);
Summe = Liste01.Sum();
Menge = Liste01.Count;
Liste01.Clear();
Liste01.CopyTo(InEinArray);

Add
hinzufügen
string.Join
alle Werte in TextBox ausgeben
Average
Durchschnitt berechnen
Clear()
Liste leeren
Sum()
Werte summieren
Count
Anzahl der Werte
CopyTo(Array)
In ein Array kopieren

Strings: Verarbeitung


string Datensatz;

Datensatz = Datensatz.Insert(2, ".");
Datensatz = Datensatz.Replace(" ", IntVariable.ToString());
Datensatz = Datensatz.Replace("A", "B");
IntegerVa = Convert.ToInt32(Datensatz.Substring(4, 2));
StringVar = Datensatz.Substring(4, 2);
Datensatz = Datensatz.Remove(3, 6);

Insert(2, ".")
Nach der 2ten Stelle einen Punkt einfügen.
Replace("A", "B")
Alle A's mit B's ersetzen.
Replace("A", Zahl.ToString())
Alle A's mit 'Zahl' ersetzen.
Substring(4, 2)
Eine Zeichenfolge von 2 Zeichen ab der Stelle 4 entnehmen.
Remove(3, 6)
Entfernt Zeichenfolge 3 bis 6.

Array-List


using System.Collections;
ArrayList MeineArrayListe = new ArrayList();

Die Array-Liste kann unterschiedliche Datentypen beinhalten.
Sie benötigt den Namespace: System.Collections.


Ereignis


private void Button_Click() {...}
private void RadioButton_CheckedChanged() {...}
private void CheckBox_CheckedChanged() {...}
private void TextBox_TextChanged() {...}

Durch das benutzerseitige Auslösen eines Ereignisses werden die jeweiligen Anweisungen in den geschweiften Klammern {...} ausgeführt: eine Befehlsabfolge wird in Gang gesetzt.

Ein Ereignis wird ausgelöst durch:

  • Klicken eines Buttons
  • Auswählen eines RadioButtons
  • Auswählen einer CheckBox
  • Schreiben in eine TextBox
  • usw.

Datum und Zeit


DateTime ZEIT = new DateTime();
ZEIT = DateTime.Now;


txtBox.Text =
"Datum kurz: " + ZEIT.ToShortDateString() +
"Datum lang: " + ZEIT.ToLongDateString()  +
"Zeit kurz:  " + ZEIT.ToShortTimeString() +
"Zeit lang:  " + ZEIT.ToLongTimeString()  +
"Tag des Jahres: " + ZEIT.DayOfYear +
"Tag der Woche:  " + ZEIT.DayOfWeek +
"Tage akt. Mon.: " +
DateTime.DaysInMonth(ZEIT.Year, ZEIT.Month);


if (DateTime.IsLeapYear(ZEIT.Year))
    txtBox.Text += "Schaltjahr: Ja";
else
    txtBox.Text += "Schaltjahr: Nein";


Digital-Uhr


private Timer Z = new Timer();


public Digital_Uhr()
{
  InitializeComponent();
  InitializeTimer();
  Z.Start();
}


private void timer1_Tick(...)
{
  Label.Text = string.Format
    (
    "{0:00}:{1:00}:{2:00}",
    DateTime.Now.Hour,
    DateTime.Now.Minute,
    DateTime.Now.Second
    );
}


public void InitializeTimer()
{
  Z.Interval = 1000;
  Z.Tick += new EventHandler(timer1_Tick);
}

Ist noch in Arbeit!

Ein Timer 'timer1' muss der Form hinzugefügt werden.
private void timer1_Tick() durch Doppelklick auf 'timer1' erzeugen.


Radio Button


if (rad_19.Checked == true)
  mwst = 19;
else
  mwst = 7;

Abfrage der Auswahl mittels if(...):

Ausgewählt?
Checked == true
Nicht ausgewählt?
Checked == false

radiobutton.Checked = true;
radiobutton.Checked = false;

Zuweisung einer Auswahl.


private void RadioButton_CheckedChanged(...)
{
  if (RadioButton.Checked == true)
  ...
}

Das Auswählen des RadioButtons kann ein Ereignis auslösen.
Code durch Doppelklicken in der Form auf RadioButton erzeugen.

Falls das Auswählen des RadioButtons zwei Ereignisse auslöst:
RadioButton.Checked == true > Event Fires Twice <


NumericUpDown (Schaltfläche)


int VariableA;
VariableA = (int)NumericUpDown.Value;

VariableA wird der Wert aus NumericUpDown zugewiesen.
(int) ändert den Datentyp von NumericUpDown von 'decimal' nach 'int'.

Increment
Schrittweite
Minimum
Minimalwert
Maximum
Höchstwert

Sichtbarkeit: Visible


this.TextBox.Visible = false;
this.RadioButton.Visible = true;

this.Label1.Visible =
this.Label2.Visible = true;

Jedes Element der Form kann aus- oder eingeblendet werden.
Das vorangestellte 'this.' kann weggelassen werden?

Sichtbarkeit: AUS
Name.Visible = false
Sichtbarkeit: EIN
Name.Visible = true

Automatisch scrollen


private void txt_Ausgabe_TextChanged(...)
{
  txt_Ausgabe.SelectionStart = txt_Ausgabe.Text.Length;
  txt_Ausgabe.ScrollToCaret();
}

Wenn die TextBox verändert wird, immer zum Ende des Textes scrollen.


Drucken (Umweg über Bitmap)


private void printDocument1_PrintPage
(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
  Bitmap BM = new Bitmap(DGV.Width, DGV.Height);
  DGV.DrawToBitmap(BM, new Rectangle(5, 5, DGV.Width, DGV.Height));
  e.Graphics.DrawImageUnscaled(BM, 5, 5);
}


private void cmd_Drucken_Click(object sender, EventArgs e)
{
  printPreviewDialog1.Document = printDocument1;

  if(printPreviewDialog1.ShowDialog() == DialogResult.Cancel)
  { printDialog1.Document = printDocument1; }

  if(printDialog1.ShowDialog() == DialogResult.OK)
  { printDocument1.Print(); }
}

Aus der Toolbox müssen folgende Elemente der Form per Doppelklick hinzugefügt werden:

  • printDialog
  • printDocument
    • per Doppelklick dem Quelltext hinzufügen
  • printPreviewDialog

Druckinhalt (hier eine DGV) wird als ein Bitmap gespeichert und danach ausgedruckt.


DataGridView: DGV


DGV.Rows.Add
(
Variable_Spalte_1, /* a */
Variable_Spalte_2, /* b */
Variable_Spalte_3  /* c */
);

DGV.Rows.Add();

DGV.Rows.Clear();

Mit DGV.Rows.Add(a, b, c); wird eine Zeile ausgegeben.
In jeder Spalte wird die dazugehörige Variable geschrieben.

DGV.Rows.Add(); gibt eine leere Zeile aus.

DGV.Rows.Clear(); löscht die DGV.


DGV.Rows[rowIndex].Cells[columnIndex].Value = value;

Einer bestimmten Zelle einen Wert zuweisen.
How to insert value into datagridview cell?

  • Spalten hinzufügen:
    • Name: Name des Elements
    • Headertext: angezeigter Name
  • Spalten bearbeiten:
    • Darstellung
      • DefaultCellStyle (Zellen):
        Farben, Schrift, Ausrichtung
      • Headertext: angezeigter Name
    • Entwurf
      • Name: Name des Elements
    • Layout
      • AutoSizeMode:
        • AllCells: Spaltenbreite automatisch
        • ColumnHeader: ...
        • Fill: Spaltenbreite bis zum Rand ?
  • Eigenschaften:
    • ColumnHeaderDefaultCellStyle (Spaltenkopf)
      • Farben, Schrift, Ausrichtung
    • DefaultCellStyle (Zellen)
      • Farben, Schrift, Ausrichtung

Datei verschlüsseln


{...}

Ist noch in Arbeit!


De/Komprimieren


using System.IO;
using System.IO.Compression;


private byte[] filebytes = null;
private FileStream fs = null;


private void cmd_Einlesen_Click(...)
{
  try
  {
    fs = new FileStream
    (@"C:\Datei.txt", FileMode.Open, FileAccess.Read);
  }

  catch
  {
    MessageBox.Show("Dateifehler!");
    Application.Exit();
  }

  if (fs.Length == 0)
  {
    MessageBox.Show("Datei ist leer!");
    Application.Exit();
  }

  filebytes = new byte[fs.Length];
  fs.Read(filebytes, 0, filebytes.Length);
  fs.Close();

  MessageBox.Show("Datei eingelesen!");
}


private void cmd_Komprimieren_Click(...)
{
  fs = new FileStream
  (@"C:\Datei.gzip", FileMode.Create);

  GZipStream gzs = new GZipStream
  (fs,CompressionMode.Compress);

  gzs.Write(filebytes, 0, filebytes.Length);
  gzs.Close();
  fs.Close();

  MessageBox.Show("Datei komprimiert!");
}


private void cmd_Dekomprimieren_Click(...)
{
  fs = new FileStream(@"C:\Datei.gzip", FileMode.Open);

  GZipStream gzs = new GZipStream
  (fs, CompressionMode.Decompress);

  StreamReader sr = new StreamReader((Stream)gzs);
  File.WriteAllText(@"C:\Datei.txt", sr.ReadToEnd());

  sr.Close();
  gzs.Close();
  fs.Close();

  MessageBox.Show("Datei dekomprimiert!");
}

...


Haupt- und Unterformular


private void cmd_Quelle_Click(...)
{
Form_Unterformular Form2 = new Form_Unterformular();
Form2.ShowDialog();
}

Form1.cs


private void cmd_UnterformularSchliessen_Click(...)
{
this.Close();
}

Form2.cs


Namen und Spalten der Tabelle auslesen & OpenFile-Dialog


string Pfad = "", TabName = "";
bool AuswahlGetroffen = false;
bool TabellenNameBekannt = false;


OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter =
"Access (*.accdb)|*.accdb|Alle (*.*)|*.*";

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Pfad = openFileDialog1.FileName;
lbx_DBTabellen.Items.Clear();
txt_AuswahlDB.Text = Pfad;
AuswahlGetroffen = true;
txt_Info.Clear();
lbx_DBSpalten.Items.Clear();
txt_AuswahlTAB.Clear();
}


if (AuswahlGetroffen == true)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString =
"Provider = Microsoft.ACE.OLEDB.12.0;"
+ @"Data Source = " + Pfad
+ ";";

/* Alle Tabellennamen ausgeben */
conn.Open();
DataTable Tabellen =
conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[]
{ null, null, null, "TABLE" });

  foreach (DataRow row in Tabellen.Rows)
  {
  lbx_DBTabellen.Items.Add(row[2]);
  }

conn.Close();
conn.Dispose();
AuswahlGetroffen = false;
}


lbx_DBSpalten.Items.Clear();

/* Prüfen, ob Item in Liste ausgewählt wurde */
if (lbx_DBTabellen.SelectedIndex < 0)
{
 MessageBox.Show("Keine Auswahl");
}
else
{
 /* Ausgewählter TabellenName als String */
 TabName = lbx_DBTabellen.GetItemText(lbx_DBTabellen.SelectedItem);
 txt_AuswahlTAB.Text = TabName;
 TabellenNameBekannt = true;
}

/* SpaltenNamen herausfinden */
if (TabellenNameBekannt == true)
{
 OleDbConnection conn = new OleDbConnection();
 DataTable Spalten;
 conn.ConnectionString =
 "Provider =
 Microsoft.ACE.OLEDB.12.0;"
 + @"Data Source = "
 + Pfad + ";";
 conn.Open();

 /* Retrieve schema information about columns */
 /* Restrict to just the selected TABLE */
 Spalten =
 conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new Object[]
 { null, null, TabName, null });

 /* List the column name from */
 /* each row in the schema table */
 for (int i = 0; i < Spalten.Rows.Count; i++)
 {
  lbx_DBSpalten.Items.Add(Spalten.Rows[i].ItemArray[3]);
 }
 conn.Close();
 TabellenNameBekannt = false;
}

Folgende Form-Elemente werden benötigt:

  • lbx_DBTabellen
  • lbx_DBSpalten
  • txt_AuswahlDB
  • txt_Info

Verweise:


Mustervorlage



{...Code...}

Hervorhebung

/* Kommentar */

//  .-***°°***-.      .-****°°~~.~~°°****-.         .-*-.
// (    Info    )o--o(     ~Kommentar~     )o-----o(  ~  )
//  °-~~~++~~~-°      °-~~~~++**°**++~~~~-°         °-~-°

/* Tooltipps */
/* &Hotkeys */
/* Tabulator (außer cmd_Ende) */
/* txt_Ausgabe: ReadOnly */


Subhead
Text

HeadLine

Subline

Erklärtext
strong
emphasize


Maskierung:
< ----- &lt;
> ----- &gt;
& ------- &amp;
" ------- &quot;
⁄ ------ &#47; --- &sol; --- &frasl; --- Slash
\ ----- &#92; --- &bsol; --- Backslash
; ----- Semikolon
Masking Characters


DataTerm
DataDefinition
DataTerm
DataDefinition

Einfache Liste:

  • Erstens
  • Zweitens
  • Drittens

Verschachtelte Liste:

  • Liste_11
    • Liste_111
    • Liste_112
  • Liste_12
    • Liste_121
    • Liste_122

Komplexe Liste:

  • 1_Eins
    • 1.1
    • 1.2
  • 2_Zwei
    • 2.1
      • 2.1.1
      • 2.1.2
    • 2.2
      • 2.2.1
    • 2.3
      • 2.3.1
        • 2.3.1.1
        • 2.3.1.2
  • 3_Drei
    • 3.1
      • 3.1.1
    • 3.2
      • 3.2.1

Caption
TabularHeaders TabularHeaders
TabularFooter
TabularData TabularData
TabularData TabularData

Caption
TabularHeaders TabularHeaders
TabularFooter
TabularData TabularData
TabularData TabularData

Caption
01
02 03 04
TabularFooter
0 1 1 0
0 1 1 0