Avatar billede kennedk Nybegynder
03. januar 2008 - 19:59 Der er 1 kommentar

Smartphone, Lave liste lidt som indbakke

Hej
Hvordan kan man lave en liste som der er i indbakken med 2 lininer tekst og man kan vælge ved at bruge tasterne ned og op.

her er et billede som viser det
http://mobilsiden.dk/gfx/public/upload/3917.jpg

Jeg har prøvet at lege lidt med et dataGrid, men det er jo langt fra hvad det skal være

Nogen der ved hvordan man laver sådan en liste?
Avatar billede kennedk Nybegynder
03. januar 2008 - 21:34 #1
Jeg fik en ide til hvordan det måske kunne løses ! :) Men er åben over for lettere løsninger!

Her er min løsning:
public partial class Form2 : Form
    {
        int aktiv = 0;
        int antal = 3;
        Control mainPanel;
        string panelName = "mitPanel";

        public Form2()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form2_Load);
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            mainPanel = panel1;
            makeList();
        }

        private void makeList()
        {
            int top = 30;
            int height = 40;
            int width = 240;
            int startaltiv = 0; //start fra nul
            for (int i = 0; i < antal; i++)
            {
                Panel panel = new Panel();
                panel.Top = top + (height * i);
                panel.Height = height;
                panel.Left = 0;
                panel.Name = panelName + i;
                panel.Width = width;

                if (i == startaltiv)
                {
                    panel.BackColor = Color.Green;
                    aktiv = i;
                }

                Label label = new Label();
                label.Top = 3;
                label.Text = "TestTekst-" + i;

                panel.Controls.Add(label);
                mainPanel.Controls.Add(panel);
            }
        }

        private void changeActive(bool DownUp)
        {
            Control minControl = FindControlByName(panelName + aktiv);
            minControl.BackColor = Color.Transparent;
            int id;
            if (DownUp)
            {
                if (aktiv == (antal - 1))
                    aktiv = 0;
                else
                    aktiv++;
            }
            else
            {
                if (aktiv == 0)
                    aktiv = (antal - 1);
                else
                    aktiv--;
            }

            Control minControl2 = FindControlByName(panelName + aktiv);
            minControl2.BackColor = Color.Green;
        }

        private Control FindControlByName(string name)
        {
            foreach (Control c in mainPanel.Controls)
            {
                if (c.Name == name)
                    return c;
            }
            return null;
        }

        private void Form2_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == System.Windows.Forms.Keys.Up))
            {
                changeActive(false);
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Down))
            {
                changeActive(true);
            }
        }

    }
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