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

Autoscroll i Focus

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

[ Pregleda: 779 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DarkMan
Darko Matesic

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



Profil

icon Autoscroll i Focus07.07.2006. u 08:53

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.
07.07.2006. u 08:53 

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 461
77.46.179.*



Profil

icon Re: Autoscroll i Focus29.08.2007. u 00:08
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.
29.08.2007. u 00:08 

negyxo
Aleksandar Perkuchin
unknown

Član broj: 29751
Poruke: 635
77.46.157.*



Profil

icon Re: Autoscroll i Focus29.08.2007. u 00:37
Override-uj WndProc, tu bi trebalo da mozes to da uradis.
Only Time Will Tell
29.08.2007. u 00:37 

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 461
77.46.179.*



Profil

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

29.08.2007. u 12:20 

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

[ Pregleda: 779 | Odgovora: 3 ]

Postavi temu Odgovori

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