Avatar billede segato Nybegynder
12. januar 2005 - 12:59 Der er 18 kommentarer og
1 løsning

Ændre højde af textbox i henhold til antallet af karakter

Nogen der har en god ide til hvordan man ændre højden af en textbox afhængigt af antallet af karakter. Med andre ord i stedet for der dukker en scrollbar op skal højden på kontrollen øges hvergang bruger tilføjer en ny linie.
Avatar billede Syska Mester
12. januar 2005 - 13:39 #1
Den er ikke nem, da der ikke bliver sat noget special tegn, hvis man bare skriver i en lang kører.....

MEn lytter da gerne med hvis andre har en løsning
Avatar billede jtbroad Nybegynder
12. januar 2005 - 13:42 #2
lav en if sætning der checker om længden af teksten i din textbox divideret med længden af textboxen er stør en 1 og sæt textbox height tilsvarende.
Avatar billede jtbroad Nybegynder
12. januar 2005 - 13:45 #3
pseudoKode:-
if ((TxtBox1.Text.length/Textbox1.width) > 1)
{
TxtBox1.Height = TextBox1.Height+TextBox1.Height
}

Noget i den retning tror jeg under OnTextChanged event
Avatar billede Syska Mester
12. januar 2005 - 13:51 #4
ja, eneste problem der er bare at alle tegn ikke er lige brede.... så det tror jeg ikke er helt optimalt, ved der har været et ligende. Hvor lenght skulle findes på en streng, kan ikke lige finde den, men det er vel 2-3 uger siden
Avatar billede jtbroad Nybegynder
12. januar 2005 - 13:56 #5
Så er spørgsmålet om man kan få pixel længden på texten..
Avatar billede segato Nybegynder
12. januar 2005 - 14:05 #6
TextBox har en font property hvor man kan få font size osv. Har forsøgt at rykke rundt med det hele men ik rigtigt noget der virker endnu. Men dne er nok lidt mere tricky end jeg havde regnet med i første omgang.
Avatar billede Syska Mester
12. januar 2005 - 14:06 #7
http://www.eksperten.dk/spm/576939
kunne måske bruges....
Avatar billede segato Nybegynder
12. januar 2005 - 14:07 #8
Jeg tænkte mere på noget med OntextChanged:

if( TextBox.Lines.Count*TextBox.Font.Height > TextBox.Height)

TextBox.Height = TextBox.Lines.Count*TextBox.Font.Height;

Men den går heller ikke.
Avatar billede Syska Mester
12. januar 2005 - 14:22 #9
private void button1_Change(object sender, EventArgs e)
{
    // MessageBox.Show( textBox1.Lines.Length.ToString() );
    if (textBox1.Lines.Length > 1) {
        textBox1.Height = textBox1.Lines.Length * textBox1.Font.Height;
    }
}
Avatar billede Syska Mester
12. januar 2005 - 14:23 #10
den virker sådan da, men det virker som om den ikke regner helt præcis alligevel :-(
Avatar billede segato Nybegynder
12. januar 2005 - 14:33 #11
Nah den virker ik rigtigt. Det ik helt en rigtig holdbar løsning. Man skulle tro der var andre ude i den store verden der har haft somme problem. Da ikke helt utænkeligt scenario. At man tilpasser højden af en textbox efter indholdet:D
Avatar billede segato Nybegynder
12. januar 2005 - 14:36 #12
Psedu vil se sådan her ud i TextChanged:

Er indholdets højde forskellig fra kontrollens højde så resize kontrol til indholdshøjde plus noget border:D Så spørgsmålet er hvordan man beregner indholdets højde.
Avatar billede segato Nybegynder
12. januar 2005 - 14:47 #13
Når fik selv løst den men tak for hjælpen anyway. Til de nyskerrige er koden her:

I OnLoad:

textBox1.ClientSize = new Size(300,textBox1.Font.Height);

I TextChanged:

int areaHeight = textBox1.Font.Height*textBox1.Lines.Length;

if(areaHeight != textBox1.ClientSize.Height )
textBox1.ClientSize = new Size(200,areaHeight+2);     

Det var sådan set det hele:D
Avatar billede segato Nybegynder
12. januar 2005 - 15:23 #14
Well efter have testet det kan jeg se det ikke helt virker efter planen. Spørgsmålet er stadig åbent.
Avatar billede segato Nybegynder
12. januar 2005 - 15:25 #15
til jbtroad's forslag. Forstil dig du laver en return så bliver den streng "\n\r". Det går jo ik helt i spænd med dit forslag.
Avatar billede segato Nybegynder
12. januar 2005 - 16:53 #16
Nå så jeg tilbage igen med en ny løsnig hvis der er interessret. RichTextBox kan man slå en scrollbar fra og til som automatisk kommer når kontrollen er fyldt ud. Selv om man slår scroll bar fra kan man stadig fange dens event. Så på det event kan man bare ændre højden. F.eks. tilføje en højde på font størrelse. Dette virker lige som det skal.
Avatar billede segato Nybegynder
11. marts 2005 - 21:46 #17
Lukket
Avatar billede jtbroad Nybegynder
12. marts 2005 - 22:28 #18
How about textbox.autosize = true?
Avatar billede segato Nybegynder
13. marts 2005 - 16:09 #19
Den er sat default og det løser ikk eproblemmet. hvis der er folk der har samme problem har jeg løst problmmet ved at sende nogle af de gamle wm messages til kontrollen.
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