Remove empty line

17 posts, 1 answers
  1. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 14 Mar 2011 Link to this post

    hi,
    I have a RadTextBox in MultiLine mode with a NullText. I add text with my code, but I have always a empty line at the end.
    How can I remove that? Sounds as a pretty easy task, but for some reason it doesnot work for me, the empty line at the end is never removed.
    Regards, Andreas
  2. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 15 Mar 2011 Link to this post

    Hello,

    I'm not sure if I understand your issue. I've tried a multiline textbox and I can't seem to see a problem with it. If you could include any supporting screenshots or additional code to explain, I'll do my best to help
    Thanks
    Richard
  3. UI for WinForms is Visual Studio 2017 Ready
  4. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 15 Mar 2011 Link to this post

    hi Richard,

    thank you for your help. I attached a screenshot. There I have a textbox (Proxies), where I write (with code) IP adresses. But unfortunaly there is an empty line at the end, so that my counter is also wrong. I thought in the TextChanged event I add some code to delete all empty lines. But everything I have tried has not worked so far.

    Regards
    Andreas
  5. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 15 Mar 2011 Link to this post

    Hello,

    I'm afraid I haven't been able to replicate your issue. I have added a RadTextBox to a form, made the RadTextBox multiline and added a button with a click event defined as follows:

    Private Sub RadButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadButton1.Click
        Me.RadTextBox1.Text = "Line 1" & Environment.NewLine & "Line 2"
        For Each line As String In RadTextBox1.Lines
            MessageBox.Show(line.ToString())
        Next
    End Sub

    This shows me 2 lines. Please could you post a sample to show how you are adding the text to the RadTextBox as it sounds as though your text contains a new line character at the end.
    Thanks
    Richard
  6. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 15 Mar 2011 Link to this post

    hi Richard,

    my codes more like this:
    private void radButton1_Click(object sender, EventArgs e)
    {
      radTextBox1.Text = radTextBox1.Text + "Line 1\r\n";
      radTextBox1.Text = radTextBox1.Text + "Line 2\r\n";
      foreach(string line in radTextBox1.Lines)
      {
        MessageBox.Show(line.ToString());
      }
    }
    A new line is added in an event.
    Is there any way to remove empty lines once I have them? There could also be an empty line added by mistake from the user, so it would be great, if there is a way to delete the empty line(s), if there are any.

    regards, Andreas
  7. Answer
    Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 15 Mar 2011 Link to this post

    Hello,

    If you want to remove the end line breaks after they are in the RadTextBox, something like this should work for you.

    radTextBox1.Text = radTextBox1.Text + "Line 1\r\n";
    radTextBox1.Text = radTextBox1.Text + "Line 2\r\n\r\n"; // will remove all end line breaks
    ArrayList list = new ArrayList();
    for (int i = 0; i <= this.radTextBox1.Lines.Count()-1; i++)
    {
        if (!String.IsNullOrEmpty(radTextBox1.Lines[i]))
        {list.Add(radTextBox1.Lines[i]);}
    }
    this.radTextBox1.Lines = (string[])list.ToArray(typeof(string));
    foreach (string line in this.radTextBox1.Lines)
    {
        MessageBox.Show(line.ToString());
    }

    Hope that helps but let me know if you have any questions
    Richard
  8. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 16 Mar 2011 Link to this post

    hi Richard,

    I am sorry, probably I have described not exact, what I want. Your code seems to remove all line breaks. But the line breaks are needed, I want just that the line breaks on empty text lines are removed.

    Regards, Andreas
  9. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 16 Mar 2011 Link to this post

    Hello,

    the code should only remove line breaks where there is nothing else on the line. E.g

    Line 1 /break
    Line 2 /break
    /break (removed)
    /break (removed)

    I based this on the code that you sent. I'll try it again and let you know the result.
    Richard
  10. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 16 Mar 2011 Link to this post

    Hello,

    I have just tried this again, and the messagebox displays a message correctly for each line. Please could you post some code that replicates your issue with this and I'll be happy to take a look
    Thanks
    Richard
  11. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 17 Mar 2011 Link to this post

    Hi Andreas,

    Did this help, or are you still having issues? Let me know if I can help further.
    All the best
    Richard
  12. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 17 Mar 2011 Link to this post

    hi Richard,

    my code looks like this:
    private void radButton1_Click(object sender, EventArgs e)
        {
          radTextBox1.Text = radTextBox1.Text + "Line 1\r\n";
          radTextBox1.Text = radTextBox1.Text + "Line 2\r\n\r\n"; // will remove all end line breaks
           
          foreach (string line in this.radTextBox1.Lines)
          {
            MessageBox.Show(line.ToString());
          }
        }
     
        private void radTextBox1_TextChanged(object sender, EventArgs e)
        {
          ArrayList list = new ArrayList();
          for (int i = 0; i <= this.radTextBox1.Lines.Count() - 1; i++)
          {
            if (!String.IsNullOrEmpty(radTextBox1.Lines[i]))
            { list.Add(radTextBox1.Lines[i]); }
          }
          this.radTextBox1.Lines = (string[])list.ToArray(typeof(string));
        }
    But that doesnot work. If I add the code from theTextChanged event handler in the event handler that adds the text, it also doesnot work for me. I am really going mad on this.
    Any ideas?

    regards, Andreas
  13. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 17 Mar 2011 Link to this post

    Hi Andreas,

    No, you shouldn't use the TextChanged event. You will make this fire again. Why not just use the Leave event of the RadTextBox

    private void Form1_Load(object sender, EventArgs e)
    {
        radTextBox1.Text = radTextBox1.Text + "Line 1\r\n";
        radTextBox1.Text = radTextBox1.Text + "Line 2\r\n\r\n";
    }
    private void radTextBox1_Leave(object sender, EventArgs e)
    {
        ArrayList list = new ArrayList(); 
        for (int i = 0; i <= this.radTextBox1.Lines.Count() - 1; i++)
        {
            if (!String.IsNullOrEmpty(radTextBox1.Lines[i]))
            { list.Add(radTextBox1.Lines[i]); }
        }
        this.radTextBox1.Lines = (string[])list.ToArray(typeof(string));
        foreach (string line in this.radTextBox1.Lines)
        {
            MessageBox.Show(line.ToString());
        }
    }

    Hope that helps, but let me know if you need further help
    Richard
  14. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 17 Mar 2011 Link to this post

    hi Richard,
    the problem is that the leave event is usually never fired, because the text is usually not entered by manual input, its entered  by this code:
    void proxyGetter_NewProxyFound(object sender, SEO.Common.Async.EventArgs<ProxyServer, string> e)
    {
      txtProxies.Text = txtProxies.Text + String.Format("{0}:{1}\r\n", e.Value1.IpAddress, e.Value1.Port);
    }
    That means, the leave event is usually not fired, but it could be fired, because of course I can also add text by hand.
    Do you see any other event that fits my needs?

    regards, Andreas
  15. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 17 Mar 2011 Link to this post

    Hello,

    From your screenshot it looks as though the user must press a button (such as validate or harvest). Can you not perform it there?
    Can I ask though, why do you not remove the line breaks before they are entered? - Or even use a RadListControl to list out the items that you need, perhaps with a simple one line RadTextBox for users to add more entries to the ListControl?

    Regards,
    Richard
  16. Andreas Lohr
    Andreas Lohr avatar
    29 posts
    Member since:
    Aug 2009

    Posted 17 Mar 2011 Link to this post

    hi Richard,

    validate would only delete items, but the harvest button add items and it is a async method that is executed, so new proxies are added by an eventhandler.
    It has a high usability, if you can add additional items with ctrl+C.
    In fact I have not thought, that it creates these problems just to delete empty lines in all cases.
    But I will think over the night how I can fix this problem.
    Thanks a lot for your awesome support.

    Best regards
    Andreas
  17. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 17 Mar 2011 Link to this post

    Hi

    You're welcome. Let me know if you want me to prepare you something using a ListControl and a RadTextBox, or indeed if you need any further help
    Thanks
    Richard
  18. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 22 Mar 2011 Link to this post

    Hi Andreas,

    Thanks for writing.

    I performed some tests and could not find a case where the TextChanged event would not be fired. I tried adding text from separate thread, on a button click, adding it by hand and a combination of these. You can use the solution provided by Richard in the TextChanged event provided that you unsubscribe from the event in the beginning and subscribe to the event in the end of it. In addition, when the Enter event is fired, you should unsubscribe and in the Leave event you subscribe again and validate the text. Another thing you can do is add the line breaks before the IP text.

    I attached a small project which I believe covers your case.

    I hope it will help. If you have further questions, I would be glad to answer them.

    Kind regards,
    Ivan Petrov
    the Telerik team
Back to Top
UI for WinForms is Visual Studio 2017 Ready