Avatar billede unsigned Nybegynder
26. februar 2007 - 08:03 Der er 4 kommentarer og
2 løsninger

Kopier knap og funktion

Jeg tænker at lave en applikation med 2190 knapper med noget bagvedliggende funktionalitet. Det er meget nemt at lave knapperne med copy og paste. Men funktionaliteten kommer ikke med. Har man ikke en "kopier knap og funktion" mulighed.

Programmet skal bruges til et sommerhus booke system. Der er seks brugere og 365 dage i året. Det giver 2190 knapper.
Avatar billede bulgroz Nybegynder
26. februar 2007 - 08:59 #1
Lugter lidt af dårligt design...
Har du overvejet f.eks. at anvende DataGridView med DataGridViewButtonColumn's ?

Derefter kan du hooke op på Click eventet og finde ud af hvilken knap som er trykket:

      void  dataGridView1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(String.Format("Kolonne:{0} Række:{1}", this.dataGridView1.CurrentCell.ColumnIndex, this.dataGridView1.CurrentCell.RowIndex));
        }

...
Avatar billede bulgroz Nybegynder
26. februar 2007 - 09:35 #2
Nu ved jeg ikke hvad dine planer er, men du bør nok også overveje at bruge CheckBox kolonner i stedet, hvilket nok er mere indlysende hvis man skal afmærke en specifik periode
Avatar billede kalp Novice
26. februar 2007 - 09:56 #3
Du kan bare copy & paste dine knapper.

For at give dem alle samme funktionalitet kan du f.eks gøre sådan her.
(nedenstående giver alle knappe samme event - dog utestet)

public partial class Form1 : Form
    {
        public Form1()
        {
            this.InitializeComponent();
            this.InitializeGlobalClick(this);
        }

        private void InitializeGlobalClick(Control control)
        {
            if(control is Button)
            control.Click += new System.EventHandler(this.button1_Click);

            foreach (Control subControl in control.Controls)
            {
                this.InitializeGlobalClick(subControl);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(string.Format("Mouse Down:\n{0}", sender.ToString()));
        }
Avatar billede kalp Novice
26. februar 2007 - 09:57 #4
Denne skal lige rettes

  if(control is Button)
            control.Click += new System.EventHandler(this.button1_Click);


til

if(control is Button)
            ((Button)Control).Click += new System.EventHandler(this.button1_Click);
Avatar billede unsigned Nybegynder
26. februar 2007 - 20:26 #5
Det kan godt være designet skal forbedres. For at holde styr på hver knap's tilstand, skal der være en tabel med lige så mange pladser. Og det hele skal gemmes i en database. Men nu har jeg fået noget at arbejde med. Alle, der har brugt tid på det, smid et svar, så deler jeg pointene.
Avatar billede bulgroz Nybegynder
26. februar 2007 - 20:58 #6
....
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