Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C# (Visual C#, Mono) » Drag´n Drop

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.05.2016, 11:56 Uhr
~samkirchenr
Gast


Hallo liebe C#´ler,

ich hänge mächtig an einem Problem fest, ich will ein Schiffeversenken programmieren, leider habe ich nun das Problem, dass ich mit dem Drag´n´Drop nicht weiter komme:


Ich erstelle in einer For insg. 100 PictureBoxen (A1-J10) welche folgende Size haben 50,50. Nun habe ich am Rand noch 4 weitere PB´s welche folgende Schiffe beinhalten

1.) 2er Schiff : Size (100,50)
2.) 3er Schiff : Size (150,50)
3.) 4er Schiff : Size (200,50)
4.) 5er Schiff : Size (250,50)


Wie schaffe ich es nun diese Schiffe vom Rand in mein Koordinatensystem zu ziehen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.05.2016, 12:29 Uhr
~samkirchner
Gast


Nun habe ich es zwar mit dem Drag´n Drop soweit hinbekommen, jedoch habe ich jetzt das Problem, dass ich ja mehrere PB´s im Koordinatensystem belegen muß


Beispiel:

Eine PB im Koordinatensystem hat Size (50,50). Je nachdem welches Schiff ich nun reinziehe variiert die Größe. Wenn ich z.B. ein dreier Schiff setzen will, wäre das z.B. A1, A2, A3. Mein Drag´n Drop setzt aber das Bild nur in A1 rein und es ist nur ein Drittel sichtbar, da die PB´s ja kleiner sind.


im Code sieht das wie folgt aus (allerdings habe ich den von Youtube https://www.youtube.com/watch?v=Xc-2IS_2-tc )



//erstellen der PB´s

Code:
for (int zeile = 0; zeile < 10; zeile++)
            {
                for (int spalte = 0; spalte < 10; spalte++)
                {                  
                    Feld[zeile , spalte ].BackColor = Color.Black;
                    Feld[zeile, spalte].AllowDrop = true;
                    Feld[zeile , spalte ].Image = null;
                    Feld[zeile, spalte].DragEnter += Spielfeld_Schiffe_setzen_DragEnter;
                    Feld[zeile, spalte].Click += new EventHandler(Spielfeld_Schiffe_setzen_Click);
                    Feld[zeile, spalte].DragDrop += Spielfeld_Schiffe_setzen_DragDrop;
                    Feld[zeile, spalte].DoubleClick += new EventHandler(Spielfeld_Schiffe_setzen_DoubleClick);
                    name++;
                }
            }



//meine SchiffPB´s sind in einer Groupbox

Code:

  GroupBox gb_schiffanzahl = new GroupBox();
            gb_schiffanzahl.Location = new Point(550, 0);
            gb_schiffanzahl.Size = new Size(250, 400);
            gb_schiffanzahl.Text = "Schiffe";
            gb_schiffanzahl.BackColor = Color.Transparent;
            gb_schiffanzahl.ForeColor = Color.Black;
            Controls.Add(gb_schiffanzahl);

            #region Groupboxinhalt
            Label capture_zweier = new Label();
            capture_zweier.Location = new Point(20, 20);
            capture_zweier.AutoSize = true;
            capture_zweier.ForeColor = Color.Black;
            capture_zweier.Text = "2er:";

            gb_schiffanzahl.Controls.Add(capture_zweier);


            PictureBox zweier = new PictureBox();
            zweier.Location = new Point(20, 40);
            zweier.AutoSize = true;
            zweier.Image = Image.FromFile("2er.jpg");
            zweier.MouseDown += MouseDown;
            gb_schiffanzahl.Controls.Add(zweier);

            Label capture_dreier = new Label();
            capture_dreier.Location = new Point(20, 110);
            capture_dreier.AutoSize = true;
            capture_dreier.Text = "3er";
            capture_dreier.ForeColor = Color.Black;
            gb_schiffanzahl.Controls.Add(capture_dreier);


            PictureBox dreier = new PictureBox();
            dreier.Location = new Point(20, 130);
            dreier.AutoSize = true;
            dreier.Image = Image.FromFile("3er.jpg");
            dreier.MouseDown += MouseDown;
            gb_schiffanzahl.Controls.Add(dreier);

            Label capture_vierer = new Label();
            capture_vierer.Location = new Point(20, 200);
            capture_vierer.AutoSize = true;
            capture_vierer.Text = "4er";
            capture_vierer.ForeColor = Color.Black;
            gb_schiffanzahl.Controls.Add(capture_vierer);

            PictureBox vierer = new PictureBox();
            vierer.Location = new Point(20, 220);
            vierer.AutoSize = true;
            vierer.Image = Image.FromFile("4er.jpg");
            vierer.MouseDown += MouseDown;
            gb_schiffanzahl.Controls.Add(vierer);

            Label capture_fuenfer = new Label();
            capture_fuenfer.Location = new Point(20, 290);
            capture_fuenfer.AutoSize = true;
            capture_fuenfer.Text = "5er";
            capture_fuenfer.ForeColor = Color.Black;
            gb_schiffanzahl.Controls.Add(capture_fuenfer);


            PictureBox fuenfer = new PictureBox();
            fuenfer.Location = new Point(20, 310);
            fuenfer.AutoSize = true;
            fuenfer.Image = Image.FromFile("5er.jpg");
            fuenfer.MouseDown += MouseDown;
            gb_schiffanzahl.Controls.Add(fuenfer);





//und das habe ich aus dem inet


Code:
  private void Spielfeld_Schiffe_setzen_DragDrop(object sender, DragEventArgs e)
        {
            PictureBox zielPos = (PictureBox)sender;
            zielPos.Image = (Image)e.Data.GetData(DataFormats.Bitmap);
        }

        private void Spielfeld_Schiffe_setzen_DragEnter(object sender, DragEventArgs e)
        {
           e.Effect = DragDropEffects.Move;
            
        }

        private void MouseDown(object sender, MouseEventArgs e)
        {
            PictureBox schiffauswahl = (PictureBox)sender;
            schiffauswahl.DoDragDrop(schiffauswahl.Image, DragDropEffects.Move);
        }



hoffe ich konnte mich halbwegs verständlich ausdrücken .


lg sam
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.05.2016, 14:08 Uhr
~samkirchner
Gast


keiner ne Idee? Oder habe ich die Frage blöd gestellt?

für eine Neuformulierung bitte bescheid geben.

lg sam
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C# (Visual C#, Mono) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: