You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#远程管理工具:TextBox无法换行显示CMD返回结果求助

解决TextBox中CMD返回结果不换行的问题

问题根源在于换行符的处理差异:Windows下的WinForms TextBox需要\r\n(CRLF)作为换行标识,你当前只发送了\n,Debug.WriteLine会自动适配系统换行规则,但TextBox不会识别单独的\n,所以导致内容拼接成一行。

修改方案一:发送时使用正确的换行符

在CMD输出处理代码中,将发送的换行符从\n改为\r\n,从源头适配Windows控件的换行需求:

private void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
    StringBuilder strOutput = new StringBuilder();
    if (!String.IsNullOrEmpty(outLine.Data))
    {
        try
        {
            strOutput.Append(outLine.Data);
            Debug.WriteLine(strOutput);
            // 替换\n为\r\n,确保TextBox能识别换行
            buffer = encoder.GetBytes("2 " + outLine.Data + "\r\n");
            networkStream = newclient.GetStream();
            networkStream.Write(buffer, 0, buffer.Length);
            networkStream.Flush();
        }
        catch (Exception err) { }
    }
}

修改方案二:接收时转换换行符(备选)

如果不想修改发送端代码,可以在服务器端填充TextBox时,将收到的\n替换为系统默认换行符:

private void updateText(TextBox text, string strdata)
{
    text.Invoke((MethodInvoker)delegate
    {
        // 将单独的\n替换为Windows系统默认换行符
        string content = strdata.Substring(2).Replace("\n", Environment.NewLine);
        text.AppendText(content);
    });
}

两种方案任选其一即可,推荐方案一,从发送环节保证格式正确性更规范。

内容的提问来源于stack exchange,提问作者user12722902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:40:44