【问题标题】:Embed console in form在表单中嵌入控制台
【发布时间】:2016-06-21 23:08:38
【问题描述】:

TL;DR

有没有办法在表单中嵌入控制台,使其成为表单的一部分?


场景

我正在使用 VB.NET 中的 Windows 窗体与 clientserverdatabase 编写聊天应用程序。服务器应该log all communication 它在textbox 中有with clients


问题

到目前为止,这不是问题 - 如果没有maxlength for strings!我希望这台服务器几乎永远不会停止(好吧,总会有一些地方它会这样做......但让我们忽略它)。因此,如果我选择Textbox1.Text &= vbnewline & "Something",它总有一天会达到这个长度并在每次即将记录某些内容时遇到exception。我也不想只删除字符串的第一个字符。


我的解决方案想法

我的解决方法是:Use a console 而不是简单的文本框和embed it into the form,因此它成为其中的一部分。有没有一种简单的方法可以做到这一点?简单来说,我的意思是我必须编写数千行代码才能实现这一目标。

我也对不同的想法和方法持开放态度。

【问题讨论】:

  • 将 TL:DR 放在问题的末尾没有多大意义 ;-)
  • 尚不清楚使用控制台如何解决您的问题;或者你所说的“控制台”到底是什么意思?
  • 控制台的最大长度比普通字符串对象小得多。您应该将最后 1000 条消息或其他内容存储在屏幕上,其余的则记录在文件中。
  • 没有。这是不可能的。控制台不能嵌入到表单中。您将需要解决阻止您使用文本框的实际问题。请记住,没有用户会阅读足够的文本来达到文本框的最大长度。如果您在他们阅读时用枪指着他们的头,请考虑使用 RichTextBox。
  • 控制台的最大长度为 32766,因此无论如何它都无法解决您的解决方案:stackoverflow.com/questions/11363552/…

标签: vb.net string logging server


【解决方案1】:

为什么不把你的聊天记录到文件中(你可以每天创建一个文件)?

    Dim filename = String.Format("C:\Temp\{0:yyyy-MM-dd}-log.txt", DateTime.Now)
    My.Computer.FileSystem.WriteAllText(filename, "line of text", True)

然后显示它 - 使用 ListBox 并将每个新行附加到列表框的末尾?每次追加时,您可以检查列表框中有多少项,如果超过 1000 个,则删除前 100 个。

【讨论】:

  • 文件会不会有朝一日会变得庞大到任何编辑器都无法打开?一旦文件中有很多字符,大多数编辑者打开它都会遇到很大的麻烦。
  • 绝对是一种方法。也已经有了类似的想法。如果我找不到其他方法,我会使用它。但如果有办法在表单中嵌入控制台,我仍然很感兴趣。
  • @Luke 你每天可以有 1 个文件
猜你喜欢
  • 1970-01-01
  • 2014-08-29
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多