Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Autoscroll i Focus

[es] :: .NET :: Autoscroll i Focus

[ Pregleda: 2422 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
..mtsns-ns.customer.sbb.co.yu.

Jabber: DarkMan


Profil

icon Autoscroll i Focus07.07.2006. u 08:53 - pre 216 meseci
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.
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
77.46.179.*

Jabber: DarkMan


Profil

icon Re: Autoscroll i Focus29.08.2007. u 00:08 - pre 202 meseci
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.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
77.46.157.*



+171 Profil

icon Re: Autoscroll i Focus29.08.2007. u 00:37 - pre 202 meseci
Override-uj WndProc, tu bi trebalo da mozes to da uradis.
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
77.46.179.*

Jabber: DarkMan


Profil

icon Re: Autoscroll i Focus29.08.2007. u 12:20 - pre 202 meseci
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;
        }

 
Odgovor na temu

[es] :: .NET :: Autoscroll i Focus

[ Pregleda: 2422 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.