Avatar billede smsng Nybegynder
10. august 2005 - 10:49 Der er 7 kommentarer og
1 løsning

Checkbox control

Heysa..

Jeg har flg:

for(int i=0; i<Form1.ArrList1.Count; i++)
{
Form2.label1 = new System.Windows.Forms.Label();
Form2.check1 = new System.Windows.Forms.CheckBox();
Form2.label2 = new System.Windows.Forms.Label();
Form2.check2 = new System.Windows.Forms.CheckBox();

Form2.label1.Location = new System.Drawing.Point(20, (80*i)+80);
Form2.label2.Location = new System.Drawing.Point(200, (80*i)+80);
Form2.check1.Location = new System.Drawing.Point(5, (80*i)+80);
Form2.check1.Location = new System.Drawing.Point(185, (80*i)+80);

this.Controls.Add(Form2.label1);
this.Controls.Add(Form2.label2);
this.Controls.Add(Form2.check1);
this.Controls.Add(Form2.check2);
}

Dette giver to rækker af label+checkbox.
Jeg vil lave en button, der angiver, hvilke checkboxe der er checked, men hvordan gør jeg det???
Avatar billede arne_v Ekspert
10. august 2005 - 10:53 #1
jeg ville starte med at ændre koden til at bruge 4 arrays (2 af typen Label
og 2 af typen CheckBox)

så er det ret nemt at loop igennem f.eks. alle checkboxene
Avatar billede smsng Nybegynder
10. august 2005 - 11:06 #2
kan du give et eksempel på hvordan det kunne se ud??
Avatar billede arne_v Ekspert
10. august 2005 - 11:11 #3
giv mig 10 minutter
Avatar billede arne_v Ekspert
10. august 2005 - 11:31 #4
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Text;

namespace E
{
    public class MainForm : Form
    {
        private string[] lbltxt = { "aaa", "bbb", "ccc" };
        private Label[] lbl;
        private CheckBox[] chkbx;
        private Label result;
        public MainForm()
        {
            InitializeComponent();
        }
       
        [STAThread]
        public static void Main(string[] args)
        {
            Application.Run(new MainForm());
        }
       
        private void InitializeComponent() {
            lbl = new Label[lbltxt.Length];
            chkbx = new CheckBox[lbltxt.Length];
            for(int i = 0; i < lbltxt.Length; i++)
            {
                lbl[i] = new Label();
                chkbx[i] = new CheckBox();
            }
            result = new Label();
            SuspendLayout();
            for(int i = 0; i < lbltxt.Length; i++)
            {
                lbl[i].Size = new Size(50, 25);
                lbl[i].Location = new Point(50, 50 + i * 50);
                lbl[i].Text = lbltxt[i];
                Controls.Add(lbl[i]);
                chkbx[i].Size = new Size(25, 25);
                chkbx[i].Location = new Point(125, 50 + i * 50);
                chkbx[i].CheckedChanged += new EventHandler(Update);
                Controls.Add(chkbx[i]);
            }
            result.Size = new Size(200, 25);
            result.Location = new Point(50, 100 + lbltxt.Length * 50);
            result.Text = "";
            Controls.Add(result);
            ClientSize = new Size(300, lbltxt.Length * 50 + 200);
            Text = "Demo";
            ResumeLayout(false);
        }
        private void Update(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder("");
            for(int i = 0; i < chkbx.Length; i++)
            {
                if(chkbx[i].Checked)
                {
                    if(sb.Length > 0)
                    {
                        sb.Append(" ");
                    }
                    sb.Append(lbl[i].Text);
                }
            }
            result.Text = sb.ToString();
        }
    }
}
Avatar billede smsng Nybegynder
10. august 2005 - 11:37 #5
Tak for hjælpen.
Bare send et svar :-)
Avatar billede arne_v Ekspert
10. august 2005 - 11:38 #6
svar
Avatar billede smsng Nybegynder
10. august 2005 - 14:25 #7
Før havde jeg en AutoScroll=true, der bare satte hhv. vertikal og horisontal scrollbars, når "indholdet" rakte ud over formens rammer, men den virker ikke, efter at jeg har ændret det som anbefalet.
Har du en ide om hvad det kan være??
Avatar billede smsng Nybegynder
10. august 2005 - 14:43 #8
Dooh...havde i min iver efter at rette det til glemt

this.ClientSize = new System.Drawing.Size(500, 550);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);

Min fejl :-)
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