C# Pitanje - DragDrop, ArrayList, PictureBox

poruka: 7
|
čitano: 1.987
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
C# Pitanje - DragDrop, ArrayList, PictureBox
pitanje

Ovako... Trebam napraviti formu na kojoj cu imati nekoliko objekata (slike racunala, PictureBox i Label) koje mogu dodavati, micati, brisati.

Može li se to pomoću ArrayList-e u koju cu ubacivati kontrole pomoću buttona?

Postoji li gotova funkcija u .Net-u koja omogućuje DragDrop?

iMac 20" - C2D 2.4GHz/2GB/320GB Mac OS X Leopard 10.5.5 ... Laborare non amo!
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
Moj PC  
0 0 hvala 0
17 godina
offline
RE: C# Pitanje - DragDrop, ArrayList, PictureBox
prihvaćeno rješenje
lampa kaže...

Ovako... Trebam napraviti formu na kojoj cu imati nekoliko objekata (slike racunala, PictureBox i Label) koje mogu dodavati, micati, brisati.

Može li se to pomoću ArrayList-e u koju cu ubacivati kontrole pomoću buttona?

Postoji li gotova funkcija u .Net-u koja omogućuje DragDrop?

Pa za controle imaš "Form.Controls" koji ti je tipa "ControlCollection", s kojim tada možeš dobiti enumerator, možeš direktno (preko imena, indeksa) pristupiti svakoj kontroli koja se nalazi na formi, tako da totalno možeš s njima upravljati. Nikakav ArrayList ti ne treba. Ako ne želiš da se vide, samo ih izbaciš ili staviš da nisu vidljive....

Drag and Drop si moraš implementirati, neznam dal postoji koja funkcija koja bi ti pomogla, nisam se toliko igrao s time...

Btw, ako koristiš WPF za formu, tamo imaš još bolji način upravljanja sa kontrolama koje se nalaze na formi, malo drugačiji od "standardnog".. Koriste se "ContentControl". Malo se igraj s time, ima dosta toga, ali dosta je močnije od "standardnog"
"Genius might be the ability to say a profound thing in a simple way." Charles Bukowski
16 godina
neaktivan
offline
RE: C# Pitanje - DragDrop, ArrayList, PictureBox
lampa kaže...

Ovako... Trebam napraviti formu na kojoj cu imati nekoliko objekata (slike racunala, PictureBox i Label) koje mogu dodavati, micati, brisati.

Može li se to pomoću ArrayList-e u koju cu ubacivati kontrole pomoću buttona?

Postoji li gotova funkcija u .Net-u koja omogućuje DragDrop?

 .net 2 je donio genericse tako da sada imaš List<T>.
ovako iz glave , class SlikeRacunala : UserControl
ako želiš .net 2 možeš class SlikeRacunala<T> : UserControl
16 godina
neaktivan
offline
RE: C# Pitanje - DragDrop, ArrayList, PictureBox
braindozer kaže...
lampa kaže...

Ovako... Trebam napraviti formu na kojoj cu imati nekoliko objekata (slike racunala, PictureBox i Label) koje mogu dodavati, micati, brisati.

Može li se to pomoću ArrayList-e u koju cu ubacivati kontrole pomoću buttona?

Postoji li gotova funkcija u .Net-u koja omogućuje DragDrop?

 .net 2 je donio genericse tako da sada imaš List<T>.
ovako iz glave , class SlikeRacunala : UserControl
ako želiš .net 2 možeš class SlikeRacunala<T> : UserControl
 ili po prilici 1. class Racunalo
2. RacunaloCollection<Racunalo> : UserControl, ICollection, IEnumerable
- ICollection<T> i IEnumerable<T> su interfejsi List<T>
16 godina
neaktivan
offline
RE: C# Pitanje - DragDrop, ArrayList, PictureBox
prihvaćeno rješenje

namespace DragAndDrop {

Form1.cs

public partial class Form1 : Form {

 

    public Form1() {

        InitializeComponent();

        listView1.DragOver += new DragEventHandler(listView1_DragOver);

        listView1.DragDrop += new DragEventHandler(listView1_DragDrop);

    }

    private void listView1_DragDrop(object sender, DragEventArgs e) {

        Racunalo<KomponentaCollection> racunalo = (Racunalo<KomponentaCollection>)e.Data.GetData(typeof(Racunalo<KomponentaCollection>));

        RacunaloListItem l = new RacunaloListItem();

        l.RacunaloItem = racunalo;

        l.Label = racunalo.Name;

        l.Text = l.Label;

        listView1.Items.Add(l);

    }

    private void listView1_DragOver(object sender, DragEventArgs e) {

        if (e.Data.GetData(typeof(Racunalo<KomponentaCollection>)) == null) e.Effect = DragDropEffects.None;

        else e.Effect = DragDropEffects.Copy;

    }

}

public class RacunaloListItem : ListViewItem {

    public string Label { get; set; }

    public Racunalo<KomponentaCollection> RacunaloItem { get; set; }

    public override string ToString() { return Label; }

}

 

RacunaloKontrola.cspublic partial class RacunaloKontrola : UserControl {

    public RacunaloKontrola() {

        InitializeComponent();

        pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint);

        this.MouseDown += new MouseEventHandler(RacunaloKontrola_MouseDown);

        pictureBox1.MouseDown += new MouseEventHandler(RacunaloKontrola_MouseDown);

        linkLabel1.MouseDown += new MouseEventHandler(RacunaloKontrola_MouseDown);

    }

    private void RacunaloKontrola_MouseDown(object sender, MouseEventArgs e) {

        if (e.Button == MouseButtons.Left) this.DoDragDrop(AddRacunalo(), DragDropEffects.All);

    }

    public Racunalo<KomponentaCollection> AddRacunalo() {

        Random rnd = new Random(Environment.TickCount);

        KomponentaCollection kc = new KomponentaCollection();

        kc.AddKomponenta(rnd.Next(0, 20));

        Racunalo<KomponentaCollection> r = new Racunalo<KomponentaCollection>();

        r.KolekcijaKomponenti = kc;

        r.RType = (RacunaloType)rnd.Next(0, 2);

        r.Name = Guid.NewGuid().ToString();

        this.BackColor = Color.FromArgb(rnd.Next(0, int.MaxValue));

        linkLabel1.Text = r.Name;

        pictureBox1.Refresh();

        return r;

    }

    private void pictureBox1_Paint(object sender, PaintEventArgs e) {

        e.Graphics.DrawString(linkLabel1.Text, this.Font, Brushes.Black,

            (this.Width - e.Graphics.MeasureString(linkLabel1.Text, this.Font).Width) / 2, this.Height / 2);

    }

}

public enum RacunaloType { DESKTOP = 0, LAPTOP, NEPTOP }

public struct Komponenta {

    public string Name;

    public string Desciption;

}

public class KomponentaCollection : List<Komponenta> {

    public void AddKomponenta(int KomponentaCount) {

        Komponenta[] kal = new Komponenta[KomponentaCount];

        Random rnd = new Random(Environment.TickCount);

        Komponenta k;

        for (int i = 0; i < kal.Length; i++) {

            kal[i] = new Komponenta();

            k = kal[i];

            k.Name = "K:" + (i + 1).ToString();

            k.Desciption = (i + i).ToString() + " - " + rnd.Next().ToString();

            this.Add(k);

        }

    }

}

public class Racunalo<KomponentaCollection> {

    public string Name { get; set; }

    public RacunaloType RType { get; set; }

    public KomponentaCollection KolekcijaKomponenti { get; set; }

}

 

} //namespace

17 godina
neaktivan
offline
C# Pitanje - DragDrop, ArrayList, PictureBox
autorov komentar

Hvala Puno !!

iMac 20" - C2D 2.4GHz/2GB/320GB Mac OS X Leopard 10.5.5 ... Laborare non amo!
Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice