Ajouter une nouvelle ligne de données à TextBox

je suis en train de faire un client de chat, et actuellement j'ai un bouton qui affichera des données sur une boîte de texte multi-ligne lorsque cliqué. Est-ce la seule façon pour ajouter des données dans la zone de texte multiligne? Je pense que c'est extrêmement inefficace, parce que si la conversation est vraiment longue la corde sera vraiment longue aussi bien.

private void button1_Click(object sender, EventArgs e)
        {
            string sent = chatBox.Text;
            displayBox.Text += sent + "rn";

        }
27
demandé sur Tilak 2012-11-10 06:07:09

5 réponses

si vous utilisez WinForms:

AppendText(myTxt) méthode TextBox au lieu de (.net 3.5+):

    private void button1_Click(object sender, EventArgs e)
    {
        string sent = chatBox.Text;

        displayBox.AppendText(sent);
        displayBox.AppendText(Environment.NewLine);

    }

le texte en lui-même a généralement une faible empreinte mémoire (vous pouvez dire beaucoup à l'intérieur de F. ex. 10kb qui est "rien"). La TextBox ne rend pas tout le texte qui se trouve dans le buffer, seulement la partie visible, donc vous n'avez pas besoin de trop vous soucier de lag. Les opérations plus lentes insèrent du texte. Le texte joint est relativement rapide.

Si vous avez besoin d'un plus complexe la manipulation du contenu que vous pouvez utiliser StringBuilder combiné avec la zone de texte. Cela vous donnera une façon très efficace de traiter du texte.

64
répondu 2017-08-10 16:25:27

Voici les moyens

  1. dans le code (comme tu l'as mentionné) ->

    displayBox.Text += sent + "\r\n";
    

    ou

    displayBox.Text += sent + Environment.NewLine;
    
  2. à Partir de l'INTERFACE utilisateur

    a)WPF!--5-->

    Set TextWrapping="Wrap" and AcceptsReturn="True"   
    

    appuyez sur la touche Entrée de la boîte de texte et une nouvelle ligne sera créée

    b) Winform zone de texte

    Set TextBox.MultiLine and TextBox.AcceptsReturn to true
    
26
répondu Tilak 2012-11-10 03:56:27

parce que vous n'avez pas précisé quelle technologie front end (GUI) vous utilisez, il serait difficile de faire une recommandation spécifique. Dans WPF, vous pouvez créer une boîte à liste et pour chaque nouvelle ligne de chat ajouter un nouveau listboxitem à la fin de la collection. Ce lien fournit quelques suggestions sur la façon dont vous pouvez obtenir le même résultat dans un environnement winforms.

0
répondu alan 2012-11-10 03:35:31

je trouve que cette méthode économise beaucoup de Dactylographie, et évite beaucoup de fautes de frappe.

chaîne nl = "\r\n";

txtOutput.Texte = "Première ligne" + nl + "Deuxième ligne" + nl + "Troisième ligne";

0
répondu DanKuz 2018-02-23 15:05:05

C# - serialData is ReceivedEventHandlerTextBox.

SerialPort sData = sender as SerialPort;
string recvData = sData.ReadLine();

serialData.Invoke(new Action(() => serialData.Text = String.Concat(recvData)));

maintenant Visual Studio laisse tomber mes répliques. Zone de texte, bien sûr, toutes les options correctes.

numéro de Série:

Serial.print(rnd);
Serial.( '\n' );  //carriage return
0
répondu Luke Lozowski 2018-09-25 17:15:27