C# Variablen Sichtbarkeit

lbm1305 schrieb:
Die Methode "btnBerechnen_Click" ist ein schlechtes Beispiel, da es sich hier um eine Handler-Methode des Click-Events handelt.

lbm1305 schrieb:
Hmm...wo sollte man denn sonst einen (Button)Click-Event erwarten?

Es ging generell um EventHandler, aber wenn du bei dem Beispiel bleiben möchtest z.B.
Code:
public class MyButton : Button
{
    protected override void OnPointerPressed( PointerRoutedEventArgs e )
    {
        GoToState( "PointerStates", "Pressed" );
        e.Handled = true;
    }
}
 
holy schrieb:
Es ging generell um EventHandler, aber wenn du bei dem Beispiel bleiben möchtest z.B.
Code:
public class MyButton : Button
{
    protected override void OnPointerPressed( PointerRoutedEventArgs e )
    {
        GoToState( "PointerStates", "Pressed" );
        e.Handled = true;
    }
}

Hier erstellst Du ein neues Control auf Basis eines (Standard)Controls. Dass hier die Funktionalität angepasst werden muss ist klar. Aber falls Du das Control "MyButton" in einem Form-Element verwendest, wird darauf auch kein "protected virtual". Und dies wurde auch so in den Beispiel gepostet.
 
Ich glaub, du willst es nicht verstehen :D

Form1: hat 2 Buttons, mehr nicht. Code siehe unten.

Code:
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        AndererDialog d = new AndererDialog();
        d.Show();

    }

    private void button1_Click(object sender, EventArgs e)
    {
        Dialog d = new Dialog();
        d.Show();
    }
}

Hat ebenfalls 2 Buttons.

Code:
public partial class Dialog : Form
{
    public Dialog()
    {
        InitializeComponent();
    }

    protected virtual void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Dialog Klick!");
    }
}

Erbt von Dialog (auch die Buttons), hat aber ein komplett anderes Verhalten.
Wenn AndererDialog weiter vererbt wird, kann das Klickverhalten wieder überschrieben werden.

Code:
public partial class AndererDialog : Dialog
{
    public AndererDialog()
    {
        InitializeComponent();
    }

    protected virtual override void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("AndererDialog Klick!");
    }
}

Z.B.
Code:
public partial class NochEinAndererDialog : AndererDialog
{
    public NochEinAndererDialog()
    {
        InitializeComponent();
    }

    protected virtual override void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("NochEinAndererDialog Klick!");
    }
}
 
Schön, dass hier so eine Diskussion draus entstanden ist :)

Wollte mal fragen, ob jemand eine Idee hat welches Programm ich schreiben könnte. Meine C# Erfahrungen sind noch am Anfang, deshalb nicht allzu schwer.

- Grundlagen beherrsche ich
- Klassen + Methoden kann ich auch

Sind eigentlich so die Sachen im Groben. Aber bin mal gespannt was ihr vorschlägt, meine letzten Programme waren ein Sleeptimer und und ein Kilometer-Rechner.

Wäre dankbar, wenn ein C# Erfahrener mein Quelltext für den Sleeptimer mal anschauen würde, ob es noch "einfacher geht" :)

Hier mal der Quelltext:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sleeptimer
{

    public partial class Form1 : Form
    {
        decimal ZeitMillisec;

        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            MessageBox.Show("Abgelaufen");

        }

        private void button1_Click(object sender, EventArgs e)
        {
            ZeitMillisec = nudCounter.Value; //ZeitMillisec hat hier bei Eingabe "2"
            ZeitMillisec *= 1000;            //ZeitMillisec hat nach "* 1000" "2000" (also in Millisekunden umgefandelt)
            timer1.Interval = (int)ZeitMillisec; //Timer nimmt nun die "2000" entgegen und interpretiert diese als 2 Sekunden, da 2000 Millisekunden
            
            timer1.Enabled = true;           //Timer wird aktiviert
        }

    }
}

Gruß
 
holy schrieb:
Ich glaub, du willst es nicht verstehen :D

Form1: hat 2 Buttons, mehr nicht. Code siehe unten.

Code:
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        AndererDialog d = new AndererDialog();
        d.Show();

    }

    private void button1_Click(object sender, EventArgs e)
    {
        Dialog d = new Dialog();
        d.Show();
    }
}

Hat ebenfalls 2 Buttons.

Code:
public partial class Dialog : Form
{
    public Dialog()
    {
        InitializeComponent();
    }

    protected virtual void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Dialog Klick!");
    }
}

Erbt von Dialog (auch die Buttons), hat aber ein komplett anderes Verhalten.
Wenn AndererDialog weiter vererbt wird, kann das Klickverhalten wieder überschrieben werden.

Code:
public partial class AndererDialog : Dialog
{
    public AndererDialog()
    {
        InitializeComponent();
    }

    protected virtual override void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("AndererDialog Klick!");
    }
}

Z.B.
Code:
public partial class NochEinAndererDialog : AndererDialog
{
    public NochEinAndererDialog()
    {
        InitializeComponent();
    }

    protected virtual override void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("NochEinAndererDialog Klick!");
    }
}

In meinen Augen kein guter Stil. Aber Du siehst das sicherlich anders. :cool_alt:
 
@Schroeerg:
Die Datentypen sind völliger Murks. "long" brauchst du nicht, es sei denn deine Karre fährt zum Mond und wenn es um Geldbeträge geht bzw. du allgemein präzise (nicht schnelle) Ergebnisse brauchst, solltest du anstatt "double" "decimal" verwenden.
 
Wollte mal fragen, ob jemand eine Idee hat welches Programm ich schreiben könnte. Meine C# Erfahrungen sind noch am Anfang, deshalb nicht allzu schwer.


Schau dir mal http://www.antme.net/pages/home an, ist einfach zu erfassen und macht riesen Spaß, weil du interaktiv erlebst, was dein Code macht.
 
Ist halt Spieleprogrammierung, oder? Ich werde es mir mal anschauen und dann eventuell kaufen.

Gruß
 
Cool, dann danke ich dir mal und werde mir das anschauen.

EDIT: Man muss sich doch das Training kaufen oder (30 € klick)?
 
Zuletzt bearbeitet:
Ja, aber das ist ja nur das Spiel an sich. Das bringt doch nur was, wenn man das auch selber programmiert, und das geht ja nur als Anfänger mit dem Video-Training, oder verstehen wir uns gerade total falsch? :).

Gruß
 
such auf youtube danach, gibt genug tutorials

Edit:
Wenn du das Projekt runtergeladen hast, dann öffne die Solution in Visual Studio und such im Solution-Explorer nach der Datei "Vorlage" bzw. nach der Klasse MeineAmeise.

Da programmierst du jetzt die KI deiner Ameise rein und wenn du das Projekt ausführst, dann kannst du dein Ameisenvolk auswählen und es wird eine Simulation gestartet.
 
Zuletzt bearbeitet:
Ok, ich schau mal. Wollte erstmal mein Buch "C# von Kopf bis Fuß" zu Ende lesen :)
Ergänzung ()

Hi, ich bins nochmal. Wollte fragen ob jemand gute Übungen für einen C# Anfänger kennt, habe mich schon durchgesucht im Netz, aber ehrlich gesagt nichts brauchbares gefunden. Eventuell kennt jemand aus dem Stegreif ein Progrämmchen.

Gruß
 
Zurück
Oben