C# 如何在窗口/消息框中显示500字的输出?

C# 如何在窗口/消息框中显示500字的输出?,c#,winforms,C#,Winforms,在Windows窗体应用程序中,我希望将wordy(500字)输出到窗口/小窗口(而不仅仅是像tools中那样的文本框控件)。例如: 我正在尝试执行pkg.pkgs*的输出。这可能会在我的windows窗体应用程序中产生巨大的输出。请给我一个想法。我不想要messagebox.show()。您可以为窗口创建一个重载构造函数,并将冗长的内容传递给该窗口 public class Window1 : Form { public Window1(string wordy) {

在Windows窗体应用程序中,我希望将wordy(500字)输出到窗口/小窗口(而不仅仅是像tools中那样的文本框控件)。例如:


我正在尝试执行pkg.pkgs*的输出。这可能会在我的windows窗体应用程序中产生巨大的输出。请给我一个想法。我不想要messagebox.show()。

您可以为窗口创建一个重载构造函数,并将冗长的内容传递给该窗口

 public class Window1 : Form
{
    public Window1(string wordy) 
    {
        textbox.text = wordy;
    }
}
你可以把窗口称为

Form wi = new Window1(message);
wi.showdialog();

如果你不能用文本区创建你自己的
MessageBox
,我建议你删掉冗长的文本。我们可以尝试两种模式:

  • 在空白处进行修剪,例如,
    我最喜欢的文字是否将其
    改为
    我最喜欢的…
    ,以节省文字

  • 然而,这并不总是可能/合理的。比如说,如果我们想在
    我最喜欢的冗长文本中添加
    10个
    符号
    我们不想离开
    我的…
    而是
    我最喜欢的…

作为模式切换的标准,让我们使用经验法则,即修剪的文本应至少为最大可能长度的
2/3
。实施:

public static string TrimWordyText(string source, int totalLength = 200) {
  if (string.IsNullOrEmpty(source))
    return source;
  else if (source.Length <= totalLength)
    return source;

  // let's try trimming on white space (sparing mode)
  int index = 0;

  for (int i = 0; i <= totalLength; ++i) {
    char ch = source[i];

    if (char.IsWhiteSpace(ch))
      index = i;
  }

  // can we save at least 2/3 of text by splitting on white space 
  if (index > totalLength * 2 / 3)
    return source.Substring(0, index) + "...";
  else
    return source.Substring(0, totalLength) + "...";
}

我认为最好的方法是创建一个非常简单的表单,表单上有一个只读文本区域和一个ok/close按钮。然后用它代替messageBox。如果消息对于
MessageBox
太长,请创建自己的对话框。对话框是一种使用
ShowDialog
显示的
表单。您还可以在表单上放置一些按钮,并为它们设置
DialogResult
。然后,他们将关闭表单,返回您为他们设置的
对话框result
。只是别忘了在
using
块中使用表单。我想关于winforms的问题是
表单
而不是
窗口
@bashis Yeap我会根据WPF更新它谢谢你。知道了!
// "My favorite..." 
myTextBox.Text = TrimWordyText("My favorite wordy text is it", 15); 
// "My favorit..." 
myTextBox.Text = TrimWordyText("My favorite wordy text is it", 10);