Avatar billede GoofyDK Nybegynder
18. november 2010 - 13:18 Der er 16 kommentarer og
1 løsning

Få scroll til at følge med i multiline textbox samt enter knap skal være tilgængelig.

Hej!

Jeg har lavet en tekstbox, og den virker også fint nok med scroll. Men problemet er bare, alt det tekst der kommer ind bliver bare ved med at gå ned ad. Hvor scrollen bare bliver stående, og teksten "forsvinder". Hvis jeg så tager fat i scroll og kører den ned, til hvor den er nået. Så kan jeg godt se hvad den har skrevet, men så bliver den også stående der. Selvom der er kommet mere tekst.

Så hvordan får jeg min scroll til at følge teksten, som går ned ad i multiline textboxen?

--

Jeg kan også selv tilføje noget tekst, men i stedet for jeg skal trykke "GO", hvordan får jeg den textbox jeg skriver fra til multiline textbox, ved bare at trykke på "Enter". Altså så "Enter" får samme funktion som min "GO" button?


Håber I kan hjælpe.
Avatar billede Spotgun Seniormester
18. november 2010 - 20:40 #1
Du kan prøve at kalde ScrollToCaret() efter du har indsat noget tekst i din tekstboks. F.eks.:

textBox1.AppendText("Test");
textBox1.ScrollToCaret();
Avatar billede Spotgun Seniormester
18. november 2010 - 20:45 #2
Og du kan prøve at fange KeyDown eventen på den tekstboks du skriver fra, og gøre følgende:

private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode == Keys.Enter)
  {
    textBox1.AppendText(textBox2.Text + Environment.NewLine);
    textBox2.Clear();
  }
}
Avatar billede GoofyDK Nybegynder
18. november 2010 - 21:03 #3
Der var ingen af dine løsningsfoslag der virkede, desværre. Har du andre idéer?
Avatar billede Spotgun Seniormester
18. november 2010 - 21:06 #4
Det bliver lidt svært at foreslå andet, uden at have set din kode. :)
Avatar billede GoofyDK Nybegynder
18. november 2010 - 21:11 #5
this.textBox1.AcceptsReturn = true;
            this.textBox1.AcceptsTab = true;
            this.textBox1.AllowDrop = true;
            this.textBox1.BackColor = System.Drawing.SystemColors.ControlLight;
            this.textBox1.Location = new System.Drawing.Point(0, 0);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.ReadOnly = true;
            this.textBox1.RightToLeft = System.Windows.Forms.RightToLeft.No;
            this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
            this.textBox1.ScrollToCaret();
            this.textBox1.Size = new System.Drawing.Size(670, 337);
            this.textBox1.TabIndex = 0;
            this.textBox1.Tag = "";

Det er det på min textbox.
Avatar billede Spotgun Seniormester
18. november 2010 - 21:16 #6
Smid lige al din kode herind. Det der er for lidt kode og for meget ude af kontekst til at jeg kan vurdere hvor fejlen ligger...
Avatar billede GoofyDK Nybegynder
18. november 2010 - 21:26 #7
Hvilken kode vil du have, for det ligger jo i flere forskellige filer. :-)
Avatar billede Spotgun Seniormester
18. november 2010 - 21:33 #8
Bare vis koden fra de relevante .cs filer.

Du kan dog godt udelade *.designer.cs filerne, da de primært kun burde indeholde kode der er autogenereret af visual studio, når du har designet dine forms.
Avatar billede GoofyDK Nybegynder
18. november 2010 - 21:44 #9
Jeg har ikke andet, som relatere direkte til min textbox, udover:

public void button3_Click(object sender, EventArgs e)
        {
            if (textBox5.Text.Length <= 0)
            {
                string fejlgrund = "Tekst mangler.";
                System.Windows.Forms.MessageBox.Show(fejlgrund, firma,
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Information);
            }
            else
            {
                textBox1.Text += textBox5.Text + "\r\n";
                textBox5.Text = "";
            }
        }
Avatar billede Spotgun Seniormester
18. november 2010 - 21:54 #10
public void button3_Click(object sender, EventArgs e)
        {
            if (textBox5.Text.Length <= 0)
            {
                string fejlgrund = "Tekst mangler.";
                System.Windows.Forms.MessageBox.Show(fejlgrund, firma,
                System.Windows.Forms.MessageBoxButtons.OK,
                System.Windows.Forms.MessageBoxIcon.Information);
            }
            else
            {
                textBox1.Text += textBox5.Text + "\r\n";
                textBox5.Text = "";
                textBox1.ScrollToCaret();
            }
        }

Og mht. enter knappen, så burde dette kunne gøre det.

1) Indsæt følgende i din constructor:

textBox5.KeyDown += new KeyEventHandler(textBox5_KeyDown);

2) Tilføj følgende metode i din klasse:

        private void textBox5_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (textBox5.Text.Length <= 0)
                {
                    string fejlgrund = "Tekst mangler.";
                    System.Windows.Forms.MessageBox.Show(fejlgrund, firma,
                    System.Windows.Forms.MessageBoxButtons.OK,
                    System.Windows.Forms.MessageBoxIcon.Information);
                }
                else
                {
                    textBox1.Text += textBox5.Text + "\r\n";
                    textBox5.Text = "";
                    textBox1.ScrollToCaret();
                }
            }
        }
Avatar billede GoofyDK Nybegynder
18. november 2010 - 22:03 #11
Det var sørme underligt, fordi jeg kan ikke få det til at virke. Ikke noget af det. :S

Jeg har smidt de koder ind, som du har lavet. Men jeg får helle ingen fejl?
Avatar billede Spotgun Seniormester
18. november 2010 - 22:06 #12
Kan du smide en zip fil op med hele dit projekt i? Det er vist lidt nemmere at finde fejlen på den facon...
Avatar billede GoofyDK Nybegynder
18. november 2010 - 22:15 #13
Fandt ud af, at jeg mangler en textBox1.Select(textBox1.Text.Length, 0);

Nu kører scrollen med ned. :-)

Nu mangler jeg bare den der enter key.
Avatar billede Spotgun Seniormester
19. november 2010 - 13:21 #14
Som nævnt tidligere, så læg en zip-fil op på nettet et sted, med hele dit projekt i. Det gør det lidt nemmere at få overblik over hvor fejlen ligger.
Avatar billede GoofyDK Nybegynder
20. november 2010 - 10:10 #15
Problemet er åbenbart løst, for nu virker det. :S

Men jeg har et spørgsmål til den scroll, hvordan kan jeg få lov til at scoll i programmet? For hvergang der kommer ny data, så scroller den ned, ret en ulempe hvis man følger noget :o)

Er der en mulighed for en anden måde?

Og læg bare svar. :)
Avatar billede Spotgun Seniormester
20. november 2010 - 17:24 #16
Du får et svar her.

Selvfølgelig hopper den ned i bunden af tekstboksen når der indsættes tekst, det er jo det du har bedt den om at gøre.
Avatar billede GoofyDK Nybegynder
20. november 2010 - 17:34 #17
Ja det er jeg klar over, men er der en anden mulighed?
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