Autor Beitrag
Gizzmo
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 22.01.14 16:42 
Hallo zusammen, hier ist ein neuer Frischling für euch ;).

Ich hoffe der Titel sagt das Grundlegende schon aus. Ich würde gern einen Button (B) an eine bestimmte Position verschieben, aber nur, wenn ein anderer Button (A) fokussiert ist und der zu verschiebene Button angeklickt wird. D.h. ich muss ja erst Button A anklicken, damit er fokussiert wird.

Das Problemchen ist sicher schnell gelöst, aber ich hab grad echt nen Brett vorm Kopf -.-.

Woher rührt das Ganze?? Ich würde gern auf ganz einfache Weise (Labels und Button) ein Schachfeld simulieren. Den Button A bekomm ich auf den Labels ohne Probleme verschoben. Nur wenn ich einen Button weghaben möchte hört es auf mit meinem Spanisch.

Hoffe ihr habt ein paar Anregungen für mich ;).

Hier noch der Quellcode:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
       private void label_Mouseclick(object sender, MouseEventArgs e)
       {
           Label clickedLabel = sender as Label;
           Button clickedButton = sender as Button;  //*hier*

           if (Bauer_S1.Focused)
           {
               Bauer_S1.Location = clickedLabel.Location;
               loc_Bau_S1 = clickedLabel.Location.ToString();
               txtSpieler1Form3.Text = loc_Bau_S1;
               Bauer_S1.BackColor = clickedLabel.BackColor;
               clickedLabel.Focus();
           }
        }


Grüße

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 22.01.14 16:51 
Ich habe nicht ganz verstanden was du willst. Aber ich rate mal folgendes

ausblenden C#-Quelltext
1:
Button focusedButton = this.ActiveControl as Button;					
Gizzmo Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 22.01.14 17:04 
Hey ;).

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe nicht ganz verstanden was du willst. Aber ich rate mal folgendes

Naja, bis jetzt klicke ich einen Button an und kann ihn auf den unterschiedlichen Lables bewegen. Steht aber ein anderer Button auf einem Lable, kann ich das Lable nicht mehr anklicken, da der Button das Label verdeckt. Also soll der Button "geschlagen" werden und an den Rand verschoben werden.


user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
Button focusedButton = this.ActiveControl as Button;					

Was genau macht diese Anweisung ? ;(

Danke für die schnelle Antwort.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 22.01.14 17:20 
Die gibt dir denn gerade focussierten Button falls das gerade focussierte Control ein Button ist.

Wenn ich dich richtig verstanden habe ist dein Problem aber das ein Button im Gegensatz zu einem Label selber den Focus haben kann und sobald du drauf klickst natürlich dir den Focus von deinem vorherigen Button wegnimmt du aber wissen mußt wer zuvor focussiert war. Wen ich jetzt richtig geraten habe brauchst du einen Button der keinen Focus haben kann. Dafür müßtest du von Button ableiten und dann diesen Button anstatt den von Winforms nutzen.

Beispiel

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    public class UnfocussableButton : Button
    {
        public UnfocussableButton() : base()
        {
            SetStyle(ControlStyles.Selectable, false);
            TabStop = false;
        }
    }


Auf dem kannst du rumklicken wie du willst der bekommt nie den Focus.
Wenn du für alle Spielfiguren diesen Button benutzt kannst du dir in dessen Click Event dann selbst die angeklickten Buttons merken und dort dann testen aka

Ich bin der schwarzer Bauer an Position x,y. Die Figur(dessen Button) der zuvor angeklickte(hast du dir selbst in einer Variablen gemerkt) war das weiße Pferd an Position x,y. Das weiße Pferd kann mit einem gültigen Zug mein Feld errreichen also bewege mich runter vom Spielfeld da ich geschlagen wurde.