Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 3.270 pregleda

Najnovija ↓

Autoscroll i Focus 07.07.2006. u 09:53 · pre 247 meseci #1
Za opis problema cu koristiti sledeci primer:
- na praznu formu dodati dva panela
- obojiti te panele razlicitim bojama da bi se videli
- na click event oba panela raditi panel.Focus()
Code:

        private void panel1_Click(object sender, EventArgs e)
        {
            panel1.Focus();
        }

- formi ukljuciti property Autoscroll
- prvi panel staviti uz levu stranu forme a drugi na desnu stranu forme tako da izlazi iz forme pri cemu se automatski pojavljuje horizontalni scrollbar
- startujete program i probajte da kliknete na oba panela

Moje pitanje je: kako spreciti da se forma, pri postavljanju fokusa na panel, automatski skroluje da prikaze fokusiranu kontrolu? Znaci hocu da pozicija horizontalnog scrollbara ostane ista pri promeni fokusa. Kontrolu moram fokusirati i tu nema izmena.
Re: Autoscroll i Focus 29.08.2007. u 01:08 · pre 233 meseca #2
Raniji problem mi je opet postao aktuelan. Ovog puta dajem example.

U novom projektu zameniti kod za Form1 sledecim:
Code:

    public partial class Form1: Form
    {
        private Panel panel1;
        private Panel panel2;

        public Form1()
        {
            panel1 = new Panel();
            panel1.Location = new Point(0, 0);
            panel1.Size = new Size(600, 100);
            panel1.BackColor = Color.LightGreen;
            panel1.Click += new EventHandler(panel_Click);

            panel2 = new Panel();
            panel2.Location = new Point(0, 100);
            panel2.Size = new Size(600, 100);
            panel2.BackColor = Color.LemonChiffon;
            panel2.Click += new EventHandler(panel_Click);

            this.SuspendLayout();
            this.Controls.Add(panel1);
            this.Controls.Add(panel2);
            this.AutoScroll = true;
            this.ClientSize = new Size(400, 250);
            this.ResumeLayout(false);
            this.Shown += new EventHandler(Form1_Shown);
        }

        void Form1_Shown(object sender, EventArgs e)
        {
            panel1.Focus();
            this.HorizontalScroll.Value = 100;
            this.HorizontalScroll.Value = 100; // Ne znam zasto ovo moram podesavati dva puta
        }

        void panel_Click(object sender, EventArgs e)
        {
            Panel panel = sender as Panel;
            if(panel != null) panel.Focus();
        }
    }


Kada se pokrene aplikacija kliknuti na drugi panel. Moje pitanje je da li neko zna kako da sprecim da se pri promeni fokusa horizontalni scroll bar vrati na pocetak?

Moje resenje je bilo da pre fokusiranja zapamtim vrednost horizontalnog scroll bara pre fokusiranja i posle fokusiranja vratim tu vrednost. Ovo dovodi do flickeringa pa bih zeleo da vidim ako postoji neko drugo resenje koje bih mogao da probam.
Re: Autoscroll i Focus 29.08.2007. u 01:37 · pre 233 meseca #3
Override-uj WndProc, tu bi trebalo da mozes to da uradis.
Re: Autoscroll i Focus 29.08.2007. u 13:20 · pre 233 meseca #4
Probao sam override WndProc same forme ali ne vidim nikakvu poruku koja se tice samog skrolovanja.
Uglavnom, nasao sam resenje kojim sam uklonio flickering:

Code:

        void panel_Click(object sender, EventArgs e)
        {
            Panel panel = sender as Panel;
            this.HScroll = false;
            if(panel != null) panel.Focus();
            this.HScroll = true;
        }

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme