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

Poziciranje cursora u textboxu

[es] :: .NET :: Poziciranje cursora u textboxu

[ Pregleda: 2445 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Poziciranje cursora u textboxu03.08.2004. u 12:05 - pre 209 meseci
Kako selektovati odredjeni deo teksta u text boxu i postviti cursor (caret) na pocetak selektovanog dela? Npr.

PERA

Znaci, hocu da simuliram, iz koda, da se npr cursor nalazi izmedju R i A i da je korisnik drzeci shift dva puta pritisnu strelicu levo.

Ako koristim
Code:

txt.SelectionStart = 1;
txt.SelectionLength = 2;


Znaci, bice selektovan odredjeni blok koji zelim (ER) ali ce cursor biti pozicioniran izmedju R i A a treba da bude izmedju P i E.

Interesantno je da prilikom simuliranja ovoga, pozicioniram se izmedju R i A i selektujem dva karaktera strelicom levo, property SelectionStart je = 1 a SelectionLength = 2, a pozicija kursora je na pocetku selektovanog dela.

Kako postaviti cursor na pocetak selektovanog dela texta?

ps. SelectionLength i drugi parametar metode Select ne dozvoljavaju negativne vrednosti.
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.jugopetrol.co.yu

Sajt: www.mika.rs


+6 Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 10:21 - pre 209 meseci
Hmmm, zaguljeno pitanje

Slicno sam probao da uradim pre godinu dana kada sam pravio svoj HexEditor u C# i nisam provalio kako se to moze uraditi iz njega a da se ne pozivaju API f-je.

Nemam ovde sors te aplikacije, ali od prilike je islo ovako: napravo sam internu klasu za moju formu koja je sadrzala neke API f-je, izmedju kojih je i SetCaretFocus();

Code:

internal class Win32API
{
    public Win32API()
    {
    }

    [DllImport("user32.dll")]
    public static extern void SetCaretPos(int x, int y);
}


Problem je sto je karet sistemski objekat, te moze da postoji samo jedan jedini i to na kontroli koja ima fokus. Tako ako hoces da klikom na neki button vidis rezultat prvo moras tom textBoxu da das fokus sa .Focus() metodom, pa onda da pozoves tvoje famozno selektovanje teksta, i onda, posto je SetCaretPos() staticna, mozes sa Win32API.SetCaretPos(x,0); da pozicioniras karet. y treba da je 0 kako bi bio od vrha textboxa, a za x je malo zahebanije: treba preko GDI+ da uzmes velicinu stringa do kareta u pixelima sa MeasureString() metodom.

Priznajem, resenje nije elegantno, ali je radilo.
Slobodno reci ako ima neceg nejasnog

BTW ovo sam kucao iz glave, nisam probao
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

aXi

Član broj: 9661
Poruke: 20
*.spinnaker-nt.com



Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 11:39 - pre 209 meseci
Naravno pretpostavljamo da je textBox1 onaj textbox koji gadjas:
------------------

//CODE:

textBox1.Select(1, 2);

Cursor.Position = new Point (this.Location.X + textBox1.Location.X + 5, this.Location.Y + textBox1.Location.Y + 5);
//

------------------

Sa pozicioniranjem kursora mislim da postoji robusnije resenje... ako te bas bude zanimalo javi da probam (uzimanje u obzir velicine slova u textboxu... i slicne stvari) pa da bacim response.

c-ya
.NET expert wanna-be
Ne citam PM :( => saljite mail
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.jugopetrol.co.yu

Sajt: www.mika.rs


+6 Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 11:58 - pre 209 meseci
Nisi razumeo choveka - nece on da pomera kurzo nego caret
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 12:03 - pre 209 meseci
Dada, ne treba mi mouse cursor nego caret, mozda sam malo nejasno sastavio pitanje.....

 
Odgovor na temu

aXi

Član broj: 9661
Poruke: 20
*.spinnaker-nt.com



Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 12:56 - pre 209 meseci
Axa... ;)... ma... pitanje je ql postavljeno nego sam ja nesto smoren i povrsno citam ;)

Hmph... Ajde onda probaj da se igras sa ovim:

////////////
textBox1.Focus();
textBox1.Select(4, 0);
SendKeys.Send("+{LEFT}");
SendKeys.Send("+{LEFT}");
/////////////
.NET expert wanna-be
Ne citam PM :( => saljite mail
 
Odgovor na temu

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 13:06 - pre 209 meseci
Ok, resio sam stvar sa ovim API-jem sto je dusty predlozio, mada je poprilicno "silovanje" ali sta ces kada nema druge. Ako nekog zanima kod izgleda ovako:

Code:

using System.Runtime.InteropServices;
.....
.....
[DllImport("user32.dll")]
public static extern int SetCaretPos(int x, int y);
.....
.....
textBox1.Focus();
textBox1.Select(1,2);
Graphics g =  textBox1.CreateGraphics();
StringFormat sFormat = new StringFormat(StringFormat.GenericTypographic); 
SizeF sf = g.MeasureString(textBox1.Text.Substring(0,textBox1.SelectionStart),textBox1.Font,500,sFormat);
SetCaretPos(sf.ToSize().Width,0);


Hvala svima.....
 
Odgovor na temu

akrosoft
Dusan Mihajlovic
Beograd

Član broj: 31201
Poruke: 129
*.nat-pool.bgd.sbb.co.yu

Sajt: www.RoditeljPortal.com


Profil

icon Re: Poziciranje cursora u textboxu04.08.2004. u 13:10 - pre 209 meseci
Citat:
aXi: Axa... ;)... ma... pitanje je ql postavljeno nego sam ja nesto smoren i povrsno citam ;)

Hmph... Ajde onda probaj da se igras sa ovim:

////////////
textBox1.Focus();
textBox1.Select(4, 0);
SendKeys.Send("+{LEFT}");
SendKeys.Send("+{LEFT}");
/////////////


Ne odgovara mi ova varijanta sa SendKeys.....duga prica.....ali hvala u svakom slucaju......
 
Odgovor na temu

[es] :: .NET :: Poziciranje cursora u textboxu

[ Pregleda: 2445 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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