[C#] Anfänger Problem

03/29/2010 02:49 gokay22#1
Hey,
Ich hab am Freitag mit C# angefangen und gleich auch mich ein bisschen eingeübt. Jetzt habe ich ein paar kleine Fragen:

Ich habe eine GUI mit diesen Steuerelementen:
[Only registered and activated users can see links. Click Here To Register...]

Wenn ich jetzt z.B. in die erste Textbox "Test22" schreibe und in die 2. "Test33" sowie auch in die 3. "Test44" will ich das per Tastendruck, der folgende Bind ausgeführt wird und dies auch in allen Fenstern.
Die Buttons dienen dazu, dass man einen individuellen HotKey für den Bind setzen kann. Nehmen wir an ich nehme den ersten Bind wo jetzt in der Textbox "Test22" steht. Jetzt drücke ich auf den Button "Deine Taste" und dieser soll jetzt aktiv sein und eine Taste empfangen. Wenn er eine Taste empfängt soll der Text des Buttons von der Taste gelesen werden (z.B. Ich drücke "S" es soll auf dem Button "S" stehen ). Nachdem soll der Hotkey S einen Event starten.

Ich bitte um genau Erklärung und nicht einfach eine msdn Seite schicken woraus ich die Klasse sehen kann. Auch sollte ein Beispiel verfügbar sein womit ich, da ich ein Anfänger bin, dies leicht hingebacken bekomme :D.
Ich danke euch im Vorraus..

MfG,
gokay22
03/29/2010 12:08 Noisuf-X#2
:facepalm: du willst das jemand dir den kompletten code vorgibt
und daraus lernen wirst du nichts und bei deinem nächsten problem was vllt nur ein bisschen anderst ist wirst du nciht wissen was du machen musst

objektorientierung musst du dir angucken, dann kannst du bei c# schon 75% deiner probleme mit nur ein paar infos selber lösen

wichtig für dich ist bei deinem problem nur was alles in dem namespace von System.Windows.Input steckt (ASM PresentationCore referenzieren nicht vergessen)

Grob gegliedert musst du in dem Click event.
1. die tastatureingabe abfangen
2. eine eigenschaft von den button ändern
3. ein neues keybinding objekt erzeugen mit den eigenschaften die du brauchst(vllt noch ein keygesture kommt auf die tastenkombination)

tja und wenn du lese faul bist hast du eh gelitten, dann würde ich mit programmieren auf hören und bei autoit bleiben;)
03/29/2010 13:02 gokay22#3
Quote:
Originally Posted by Noisuf-X View Post
:facepalm: du willst das jemand dir den kompletten code vorgibt
und daraus lernen wirst du nichts und bei deinem nächsten problem was vllt nur ein bisschen anderst ist wirst du nciht wissen was du machen musst

objektorientierung musst du dir angucken, dann kannst du bei c# schon 75% deiner probleme mit nur ein paar infos selber lösen

wichtig für dich ist bei deinem problem nur was alles in dem namespace von System.Windows.Input steckt (ASM PresentationCore referenzieren nicht vergessen)

Grob gegliedert musst du in dem Click event.
1. die tastatureingabe abfangen
2. eine eigenschaft von den button ändern
3. ein neues keybinding objekt erzeugen mit den eigenschaften die du brauchst(vllt noch ein keygesture kommt auf die tastenkombination)

tja und wenn du lese faul bist hast du eh gelitten, dann würde ich mit programmieren auf hören und bei autoit bleiben;)
Also du verstehst mich glaubich falsch..
Wer sagte denn das ihr mir einen ganzen Quellcode geben sollt ? Ich wollte eine kleine Erklärung und ein kleines Beispiel.

Hier z.B. das ist gut für mich:
Quote:
Grob gegliedert musst du in dem Click event.
1. die tastatureingabe abfangen
2. eine eigenschaft von den button ändern
3. ein neues keybinding objekt erzeugen mit den eigenschaften die du brauchst(vllt noch ein keygesture kommt auf die tastenkombination)
Und du willst garnicht wissen wielang ich schon an einem Global Hotkey und Hook und sonstiges setze! Ich bemüh mich bis zur Spitze und nicht wie andere die nach einer Weile aufhören..
Ihr denkt auch echt immer nur negativ. Bitte #closed!
03/29/2010 17:59 Noisuf-X#4
Quote:
Originally Posted by gokay22 View Post
Also du verstehst mich glaubich falsch..
Wer sagte denn das ihr mir einen ganzen Quellcode geben sollt ? Ich wollte eine kleine Erklärung und ein kleines Beispiel.

Hier z.B. das ist gut für mich:


Und du willst garnicht wissen wielang ich schon an einem Global Hotkey und Hook und sonstiges setze! Ich bemüh mich bis zur Spitze und nicht wie andere die nach einer Weile aufhören..
Ihr denkt auch echt immer nur negativ. Bitte #closed!
dann habe ich dich ein bisschen falsch verstanden, aber wieso willst du dann keine msdn seiten ;)

[Only registered and activated users can see links. Click Here To Register...]

zu beispiel bei KeyBinding ist ein super beispiel für ein KeyBinding Objekt
also für C# habe sie da schöne sachen drinne

und das sag ich als LinuxNutzer:cool:
03/29/2010 20:21 gokay22#5
Das hilft mir jetzt eher nicht weiter..
Und das ist ja eher eins meiner Probleme :D Hätte gerne das Überprüfen der Hotkeys auch.

So mache ich zz. den Buttontext für die Hotkeys:

Code:
public int index;
public bool check;


        private void MainForm_KeyDown(object sender, KeyEventArgs e)
        {
                if (check == true)
                {
                    if (index == 0)
                    {
                         button4.Text = e.KeyData.ToString();
                    }
                    check = false;
                }
         }

        private void button1_Click(object sender, EventArgs e)
        {
            check = true;
            index = 0;
        }
Und jetzt will ich aber noch das er dies korrigiert ob der Key schon verwendet wurde. Wäre echt nett von euch das jetzt auch zu lösen :)
03/29/2010 21:21 Noisuf-X#6
du kannst alle buttons in eine liste packen

Quote:
public List<Button> Buttonliste = new List<Button>();
...

//bei initalsieren kannst du dann ja alle adden z.b. so
foreach (var item in Controls)
{
if (item is Button)
Buttonliste.Add((Button)item);
}

...

//und dann kannst du immer mit Linq abfragen ob es einen button gibt der den Button enhält

Buttonliste.Select(p => p.Text).Contains(e.KeyData.ToString()) // gibt einen bool zurück kannst du also in einer abfrage benutzen
richtig sinnvoll ist das aber nicht da du so die datenschicht und die anzeige vermischt und das ist sehr sehr dreckige programmierung
03/30/2010 00:19 gokay22#7
Quote:
Originally Posted by Noisuf-X View Post
du kannst alle buttons in eine liste packen



richtig sinnvoll ist das aber nicht da du so die datenschicht und die anzeige vermischt und das ist sehr sehr dreckige programmierung
Mhm wenns dreckiges Programmieren ist und nicht sinnvoll ausgearbeitet ist würde ich es auch nicht übernehmen.
03/30/2010 11:16 Noisuf-X#8
Quote:
Originally Posted by gokay22 View Post
Mhm wenns dreckiges Programmieren ist und nicht sinnvoll ausgearbeitet ist würde ich es auch nicht übernehmen.
ich habe nicht von meinem geredet, sondern von deinem, ich habe auf dem nur was drauf gesetzt, da du was dafür haben wolltest, ich würde das von grund auf anderst angehen

erklärung

1. du speicherst die taste die du verwendest als string im anzeige text(was später sowieso gehörig für fehler sorgen würde) des buttons, das meine ich mit vermischung der datenschicht und anzeigeschicht von
2.diese index = etc.. und check = true, ist ganz ehrlich gesagt "scheisse", un nötig kompliziert, schlecht um neue sachen ein zufügen und hardcodiert ist immer :facepalm:

und so wie ich das lese willst du dich ja richtig mit beschäftigen, wieso dann nicht gleich von anfang an professionell rangehen

lösungsvorschläge

1. von der klasse button ableiten um ein control zuhaben was schon tut was du willst(ist für so ein programm wahrscheinlich ein bisschen to much)
aber es ist die professionellst lösung und schnellste, da man so viel viel leichter was ändern kann am programm und vorallem bei großen programmen ist das die einzige sinnvolle lösung, vorallen wenn mehere an einem projekt arbeiten
2.du referenzierst die jeweiligen buttons die du benutzt und gehst zb über das tag was sich hier für richtig nützlich erweist
(ist zwar nicht die beste lösung, aber schon ein bisschen sinvoller und schöner gelöst)

da ich heute keine zeit habe, kann ich dir morgen für jedes mal ein kleines beispiel schreiben

P.S. bitte versuch nicht irgenteine sprache aus den TuTs hier im forum zu lesen, ich will hier ja ncihts schlecht reden aber die meisten "ziehst du button hier rein, schreibst dann in die funktion" tuts sind, eher irre führend als hilfreich und erklären jemand 0,00000001 % wie die programmiersprache funktioniert

guck in wirklich dotnet foren oder ließ ein buch über c#(wenigstens zum nachschlagen)
[Only registered and activated users can see links. Click Here To Register...]
03/30/2010 14:00 gokay22#9
Ok Danke dir :)
Ist echt nett von dir, dass du dir Zeit für mich nimmst..
Aber den Quellcode im Zitat versteh ich irgendwie nicht richtig.
Das würde ich aus meiner Sicht sehen:
Du erstellst eine Buttonliste, machst eine Abfrage und wandelst zuletzt den KeyCode in einen String..

Und ja das mit den TuTs ist eine Sache ^^.
Nochmals Danke.