C# 如何删除richtextbox中的间距?

C# 如何删除richtextbox中的间距?,c#,wpf,richtextbox,C#,Wpf,Richtextbox,与此问题相关,我想删除我的richtextbox中的空格,因为显示中始终包含一个空格,如: Hello Hello Hello 我想修改将显示此文本的代码,如下所示: Hello Hello Hello 我该怎么做?有人知道吗?谢谢 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using

与此问题相关,我想删除我的richtextbox中的空格,因为显示中始终包含一个空格,如:

Hello


Hello


Hello
我想修改将显示此文本的代码,如下所示:

Hello
Hello
Hello
我该怎么做?有人知道吗?谢谢

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO.Ports;
using System.Threading;
using System.Windows.Threading;
using System.Data.SQLite;
using System.Text.RegularExpressions;

namespace SerialTrial
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>

    public class ThreadExample
    {
        FlowDocument mcFlowDoc = new FlowDocument();
        Paragraph para = new Paragraph();
        public static void ThreadJob(MainWindow mainWindow)
        {
            string dBConnectionString = @"Data Source = C:\Users\Documents\Visual Studio 2012\Projects\SerialTrial\SerialTrial\bin\Debug\employee.sqlite;";
            SQLiteConnection sqliteCon = new SQLiteConnection(dBConnectionString);
            //open connection to database
            try
            {
                sqliteCon.Open();
                SQLiteCommand createCommand = new SQLiteCommand("Select empID from EmployeeList", sqliteCon);
                SQLiteDataReader reader;
                reader = createCommand.ExecuteReader();


                //richtextbox2.Document.Blocks.Clear();
                while (reader.Read())
                {

                    string Text = (String.Format("{0}", Object.Equals(Variables.buffering, reader.GetValue(0))));
                    if (Convert.ToBoolean(Text))
                    {
                        mainWindow.Dispatcher.Invoke(new Action(() => 
                    mainWindow.richtextbox2.Document.Blocks.Add(new Paragraph(new Run("Hello")))));
                        string text = "s";
                        mainWindow.WriteSerial(text);
                        Console.WriteLine(Text);
                        //richtextbox2.Document.Blocks.Add(new Paragraph(new Run(Text)));
                    }
                }
                sqliteCon.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

    }


    public partial class MainWindow : Window
    {
        SerialPort serial = new SerialPort();
        //string received_data;
        //Thread readThread = new Thread(Read);
        FlowDocument mcFlowDoc = new FlowDocument();
        Paragraph para = new Paragraph();



        public MainWindow()
        {
            InitializeComponent();
            combobox1.Items.Insert(0, "Select Port");
            combobox1.SelectedIndex = 0;
            string[] ports = null;
            ports = SerialPort.GetPortNames();


            // Display each port name to the console. 
            int c = ports.Count();
            for (int i = 1; i <= c; i++)
            {
                if (!combobox1.Items.Contains(ports[i - 1]))
                {
                    combobox1.Items.Add(ports[i - 1]);
                }

            }
        }
        string dBConnectionString = @"Data Source = C:\Users\Documents\Visual Studio 2012\Projects\SerialTrial\SerialTrial\bin\Debug\employee.sqlite;";

        static int count = 0;

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            count++;
            string[] ports = null;
            ports = SerialPort.GetPortNames();


            // Display each port name to the console. 
            int c = ports.Count();
            for (int i = 1; i <= c; i++)
            {
                if (!combobox1.Items.Contains(ports[i - 1]))
                {
                    combobox1.Items.Add(ports[i - 1]);
                }

            }

        }

        private void combobox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          string myItem = combobox1.SelectedItem.ToString();
          textbox1.Text = myItem;
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if ((string)button2.Content == "Connect")
                {
                    string myItem = combobox1.SelectedItem.ToString();
                    if (myItem == "Select Port")
                    {
                        MessageBox.Show("Select Port");
                    }
                    else
                    {
                        serial.PortName = myItem;
                        serial.Open();
                        textbox2.Text = "Serial Port Opened";
                        button2.Content = "Disconnect";
                        serial.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);

                    }
                }

                else
                {
                    serial.Close();
                    button2.Content = "Connect";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        #region Receiving


        public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {   
            int bytes = serial.BytesToRead;
            byte[] buffer = new byte[bytes];
            serial.Read(buffer, 0, bytes);
            foreach (var item in buffer)
            {
                Console.Write(item.ToString());
            }
            Variables.buffering = BitConverter.ToInt64(buffer, 0);
            Console.WriteLine();
            Console.WriteLine(Variables.buffering);
            Thread thread = new Thread(new ThreadStart(() => ThreadExample.ThreadJob(this)));
            thread.Start();
            thread.Join();
        }


        /*
        private delegate void UpdateUiTextDelegate(string text);
        private void Receive(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            // Collecting the characters received to our 'buffer' (string).
            received_data = serial.ReadExisting();
            Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUiTextDelegate(WriteData), received_data);
        }

        private void WriteData(string text)
        {
            // Assign the value of the recieved_data to the RichTextBox.
            para.Inlines.Add(text);
            mcFlowDoc.Blocks.Add(para);
            richtextbox2.Document = mcFlowDoc;
            richtextbox2.ScrollToEnd();
        }
         */

        #endregion

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            if (serial.IsOpen)
            {
                TextRange allTextRange = new TextRange(richtextbox1.Document.ContentStart, richtextbox1.Document.ContentEnd);
                string allText = allTextRange.Text;
                serial.WriteLine(allText);
            }
        }



        public void WriteSerial(string text)
        {
            serial.Write(text);
        }



    }
}
试试下面的正则表达式


通过Regexawh将多个换行替换为单个换行。我这里有我的密码。顺便说一下,我正在使用wpf。不,它不工作rtb.Text是什么?RichTextBox.RichTextBox.Resources的ID在wpf c中不适用我想错误2在类型“RichTextBox”中找不到可附加属性“Resources”。错误3成员资源无法识别或不可访问。我有我的问题,我刚刚测试了它,正在工作,您应该在代码中要进行此更改的地方添加此项。
 if (Convert.ToBoolean(Text))
                        {
                            mainWindow.Dispatcher.Invoke(new Action(() => 
                        mainWindow.richtextbox2.Document.Blocks.Add(new Paragraph(new Run("Hello")))));
                            string text = "s";
                            mainWindow.WriteSerial(text);
                            Console.WriteLine(Text);
                            //richtextbox2.Document.Blocks.Add(new Paragraph(new Run(Text)));
                        }
RichTextBox1.Text = Regex.Replace(RichTextBox1.Text, @"^\s*$(\n|\r|\r\n)", "", RegexOptions.Multiline);
string myText = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd).Text;
var resultString = Regex.Replace(myText, @"( |\r?\n)\1+", "$1");