🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
7 messages
7 total messages Started by Marek Sun, 06 Dec 2009 12:40
DoDragDrop w mojej wlasnej, osadzonej klasie
#21216
Author: Marek
Date: Sun, 06 Dec 2009 12:40
26 lines
1601 bytes
Witam :)

Pytanie poczatkujacego.

Mam forme, na niej panel, na panelu tworze dynamicznie PictureBox'y.

Do kazdego stworzonego PictureBox'a podpinam obsluge roznych zdarzen.

Udalo mi sie podpiac DragEnter, DragDrop.

Dzieki temu moge na moje PictureBox zrzucac inne PictureBox ale tylko te, 
ktore sa zdefiniowane na poziomie formatki.

Chcialbym moc podpiac do kazdego dynamicznie stworzonego PictureBox 
zdarzenie MouseDown a w nim
funkcje DoDragDrop. Niestety nie udaje mi sie to, dostaje komunikat:

Error 1 Cannot access a nonstatic member of outer type 
'System.Windows.Forms.Control' via nested type 'XYZ.FrmEdytor.Klocek' 
D:\USERS\JACEK\C#\moje programy\XYZ\XYZ\FrmEdytorGlowna.cs 73 17 XYZ

Pytanie: jak temu zaradzic?

Pieknie dziekuje :)

Marek
Re: DoDragDrop w mojej wlasnej, osadzonej klasie
#21217
Author: Tomasz MuszyƄski
Date: Sun, 06 Dec 2009 14:59
22 lines
1961 bytes
W dniu 09-12-06 13:40, Marek pisze:
> Mam forme, na niej panel, na panelu tworze dynamicznie PictureBox'y.
>
> Do kazdego stworzonego PictureBox'a podpinam obsluge roznych zdarzen.
>
> Udalo mi sie podpiac DragEnter, DragDrop.
>
> Dzieki temu moge na moje PictureBox zrzucac inne PictureBox ale tylko
> te, ktore sa zdefiniowane na poziomie formatki.
>
> Chcialbym moc podpiac do kazdego dynamicznie stworzonego PictureBox
> zdarzenie MouseDown a w nim
> funkcje DoDragDrop. Niestety nie udaje mi sie to, dostaje komunikat:
>
> Error 1 Cannot access a nonstatic member of outer type
> 'System.Windows.Forms.Control' via nested type 'XYZ.FrmEdytor.Klocek'
> D:\USERS\JACEK\C#\moje programy\XYZ\XYZ\FrmEdytorGlowna.cs 73 17 XYZ

Napisz jak to podpinasz, bo wg mnie pictureBox1.MouseDown+=new 
MouseEventHandler(pictureBox1_MouseDown); powinno dziaƂać bez problemu.

tm
Re: DoDragDrop w mojej wlasnej, osadzonej klasie
#21218
Author: Marek
Date: Sun, 06 Dec 2009 17:33
7 lines
1225 bytes
> Napisz jak to podpinasz, bo wg mnie pictureBox1.MouseDown+=new 
> MouseEventHandler(pictureBox1_MouseDown); powinno dziaƂać bez problemu.

To nie z podpieciem mam problem ale z wykorzystaniem funkcji "DoDragDrop" 
wewnatrz mojej klasy mam problem.

Marek 
Re: DoDragDrop w mojej wlasnej, osadzonej klasie
#21219
Author: Tomasz MuszyƄski
Date: Mon, 07 Dec 2009 18:16
13 lines
1535 bytes
W dniu 09-12-06 18:33, Marek pisze:
>> Napisz jak to podpinasz, bo wg mnie pictureBox1.MouseDown+=new
>> MouseEventHandler(pictureBox1_MouseDown); powinno dziaƂać bez problemu.
>
> To nie z podpieciem mam problem ale z wykorzystaniem funkcji

Tak, ĆŒeƛ napisaƂ.

> "DoDragDrop" wewnatrz mojej klasy mam problem.

No to daj jakiƛ kawaƂek kodu.

tm
Re: DoDragDrop w mojej wlasnej, osadzonej klasie
#21220
Author: Polon
Date: Thu, 10 Dec 2009 01:08
81 lines
3673 bytes
> No to daj jakiƛ kawaƂek kodu.

Prosze bardzo:

public class Klocek //Klocek to pojedyncza "komorka" mojej planszy
        {
            private PictureBox obrazek;
            private char typObrazka; //to jest char poniewaz kod planszy 
skladac sie bedzie z ciagu literek, kazdy klocek jest
                                     //charakteryzowany przez jeden char
            private byte kolumna;
            private byte wiersz;

            private void DragDrop(object sender, DragEventArgs e)
            {
                this.obrazek.Image = (Bitmap)e.Data.GetData(typeof(Bitmap));

            }

            private void DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(typeof(Bitmap)))
                {
                    e.Effect = DragDropEffects.Copy;
                }
                else
                    {
                        e.Effect = DragDropEffects.None;
                    }
            }

            private void MouseDown(object sender, MouseEventArgs e)
            {
                PictureBox source = (PictureBox)sender;
                DoDragDrop(source.Image, DragDropEffects.Copy); <- tu sie 
wywala,

            }


            public Klocek(byte aWiersz, byte aKolumna, char aTypObrazka, 
ImageList aImageList, Panel aPanel)
            {
                typObrazka = aTypObrazka;
                //imageList = aImageList;
                kolumna = aKolumna;
                wiersz = aWiersz;

                obrazek = new PictureBox();
                obrazek.Image = aImageList.Images[aTypObrazka - 97]; //-97 
aby 'a' mialo indeks '0'
                obrazek.SizeMode = PictureBoxSizeMode.StretchImage;

                obrazek.Width = obrazekSzerokosc;
                obrazek.Height = obrazekWysokosc;

                obrazek.Left = aKolumna * obrazekSzerokosc;
                obrazek.Top = aWiersz * obrazekWysokosc;
                obrazek.AllowDrop = true;
                obrazek.DragEnter += new 
System.Windows.Forms.DragEventHandler(this.DragEnter);
                obrazek.DragDrop += new 
System.Windows.Forms.DragEventHandler(this.DragDrop);
                obrazek.MouseDown += new 
System.Windows.Forms.MouseEventHandler(this.MouseDown);

                klockiTabela[aWiersz, aKolumna] = this;

                aPanel.Controls.Add(obrazek);

            }
        }


komunikat o bledzie to:

Error 1 Cannot access a nonstatic member of outer type 
'System.Windows.Forms.Control' via nested type 'XXX.FrmEdytor.Klocek' 
D:\Lolek\JACEK\C#\moje programy\XXX\XXX\FrmEdytorGlowna.cs 72 17 XXX

Marek
Re: DoDragDrop w mojej wlasnej, osadzonej klasie
#21221
Author: Tomasz MuszyƄski
Date: Fri, 11 Dec 2009 21:40
25 lines
1946 bytes
W dniu 09-12-10 02:08, Polon pisze:
>> No to daj jakiƛ kawaƂek kodu.
>
> Prosze bardzo:
>
> public class Klocek //Klocek to pojedyncza "komorka" mojej planszy
> { ... }

No i tu jest waĆŒne to w czym osadziƂeƛ tą klasę, bo poprosiƂeƛ się o 
bƂąd, który podaje Ci kompilator.

> ciach
> DoDragDrop(source.Image, DragDropEffects.Copy); <- tu sie wywala,

source.DoDragDrop(source.Image, DragDropEffects.Copy);

i powinno dziaƂać.

> Error 1 Cannot access a nonstatic member of outer type
> 'System.Windows.Forms.Control' via nested type 'XXX.FrmEdytor.Klocek'
> D:\Lolek\JACEK\C#\moje programy\XXX\XXX\FrmEdytorGlowna.cs 72 17 XXX

Czytaj dokƂadnie komunikaty kompilatora :)

tm
Re: DoDragDrop w mojej wlasnej, osadzonej klasie
#21222
Author: Polon
Date: Mon, 14 Dec 2009 23:39
7 lines
1149 bytes
> source.DoDragDrop(source.Image, DragDropEffects.Copy);

I dziala!

Piekne dzieki :)

Marek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads