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
Author: Marek
Date: Sun, 06 Dec 2009 12:40
Date: Sun, 06 Dec 2009 12:40
26 lines
1601 bytes
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
Author: Tomasz MuszyĆski
Date: Sun, 06 Dec 2009 14:59
Date: Sun, 06 Dec 2009 14:59
22 lines
1961 bytes
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
Author: Marek
Date: Sun, 06 Dec 2009 17:33
Date: Sun, 06 Dec 2009 17:33
7 lines
1225 bytes
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
Author: Tomasz MuszyĆski
Date: Mon, 07 Dec 2009 18:16
Date: Mon, 07 Dec 2009 18:16
13 lines
1535 bytes
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
Author: Polon
Date: Thu, 10 Dec 2009 01:08
Date: Thu, 10 Dec 2009 01:08
81 lines
3673 bytes
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
Author: Tomasz MuszyĆski
Date: Fri, 11 Dec 2009 21:40
Date: Fri, 11 Dec 2009 21:40
25 lines
1946 bytes
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
Author: Polon
Date: Mon, 14 Dec 2009 23:39
Date: Mon, 14 Dec 2009 23:39
7 lines
1149 bytes
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