Avatar billede ahara Nybegynder
27. juli 2005 - 15:24 Der er 14 kommentarer og
1 løsning

Array af pictureBox'es

Hej

Hvordan laver jeg et array indeholdende f.eks. 4 pictureBox'es i c#?

Tak
AHR
Avatar billede arne_v Ekspert
27. juli 2005 - 15:29 #1
Lige ud af landevejen.

PictureBox[] pb = new PictureBox[4];
for(int i = 0; i < pb.Length; i++)
{
    pb[i] = new PictureBox();
}
Avatar billede arne_v Ekspert
27. juli 2005 - 15:29 #2
et eksempel med CheckBox:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace DefaultNamespace
{
    public class MainForm : Form
    {
        private CheckBox[] chkbox;
        private Button calc;

        public MainForm()
        {
            InitializeComponent();
        }
        [STAThread]
        public static void Main(string[] args)
        {
            Application.Run(new MainForm());
        }
        private void InitializeComponent() {
            calc = new Button();
            chkbox = new CheckBox[64];
            for(int i = 0; i < chkbox.Length; i++)
            {
                chkbox[i] = new CheckBox();
            }
            SuspendLayout();
            for(int i = 0; i < chkbox.Length; i++)
            {
                chkbox[i].Location = new Point(400 - 50 * (i % 8), 225 - 25 * (i / 8));
                chkbox[i].Text = "bit " + i;
            }
            calc.Location = new Point(50, 300);
            calc.Size = new Size(400, 25);
            calc.Text = "Beregn integer fra bits";
            calc.Click += new EventHandler(CalcClick);
            ClientSize = new Size(500, 350);
            for(int i = 0; i < chkbox.Length; i++)
            {
                Controls.Add(chkbox[i]);
            }
            Controls.Add(calc);
            Text = "Main Form";
            ResumeLayout(false);
        }
        void CalcClick(object sender, EventArgs e)
        {
            long res = 0;
            for(int i = 0; i < chkbox.Length; i++)
            {
                res = 2 * res + (chkbox[63-i].Checked ? 1 : 0);
            }
            MessageBox.Show("Integer = " + res);
        }
    }
}
Avatar billede ahara Nybegynder
27. juli 2005 - 15:37 #3
Men hvad hvis mine pictureBoxes allerede eksisterer og kan ses i min form.

kan man så lave noget lignende dette:

PictureBox[] pb = new PictureBox[4];

pb[0] = og så en reference til pictureBox1 som eksisterer
Avatar billede arne_v Ekspert
27. juli 2005 - 16:38 #4
ja
Avatar billede arne_v Ekspert
27. juli 2005 - 16:39 #5
et alternativ kunne muligvis være at iterere over alle Controls og finde
dine PictureBox'e - det afhænger lidt af hvad du skal bruge det til
Avatar billede ahara Nybegynder
27. juli 2005 - 16:58 #6
Hvordan laver jeg denne reference?

pb[0] = og så en reference til pictureBox1 som eksisterer
Avatar billede arne_v Ekspert
27. juli 2005 - 17:01 #7
lige ud af landevejen

pb[0] = pictureBox1;
Avatar billede ahara Nybegynder
27. juli 2005 - 17:03 #8
Prøver lige og vender tilbage. Men det er jo rigtigt man bruger jo ikke & og * i c#
Avatar billede arne_v Ekspert
27. juli 2005 - 18:14 #9
de var ikke engang nødvendige i C++

fordi

PictureBox[] pb = new PictureBox[4];
PictureBox pictureBox1 = new PictureBox();
pb[0] = pictureBox1;

jo i C++ er

PictureBox **pb = new (PictureBox *)[4];
PictureBox *pictureBox1 = new PictureBox();
pb[0] = pictureBox1;
Avatar billede arne_v Ekspert
27. juli 2005 - 18:15 #10
og et svar i formodning om at du får det til at virke
Avatar billede ahara Nybegynder
27. juli 2005 - 22:18 #11
Tak det virker arne. Har bare et sidste spg. hvis du kan svare. Hvis man ikke opererer med referencer i c# sender man så f.eks. objekter til funktioner i stedet for en reference. Det må da være meget ressourcekrævende.
Avatar billede arne_v Ekspert
27. juli 2005 - 22:30 #12
omvendt

en C# reference er en C++ pointer

så man sender altid en pointer over - man kan ikke sende objektet over
Avatar billede ahara Nybegynder
27. juli 2005 - 23:14 #13
argh, og en c# reference laves sådanne eller

void test(ref xxx)

laves en reference ikke med ref i c#?
Avatar billede arne_v Ekspert
27. juli 2005 - 23:20 #14
C#: void test(X x)
er
C++: void test(X *x)

C#: void test(ref X x)
er
C++: void test(X& *x)
Avatar billede ahara Nybegynder
27. juli 2005 - 23:22 #15
super tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester