C# 是否将Windows窗体应用程序中的代码转换为WPF?
我正在尝试将代码从WFA(Windows窗体应用程序)转换为WPF。然而,我遇到了很多困难。没有.MaxLength。当使用Windows窗体应用程序时,也没有.Text。如何为WPF重新编写以下代码 xbox指的是聊天窗口中的一个框,用户在其中键入文本 注:以下代码适用于WFAC# 是否将Windows窗体应用程序中的代码转换为WPF?,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我正在尝试将代码从WFA(Windows窗体应用程序)转换为WPF。然而,我遇到了很多困难。没有.MaxLength。当使用Windows窗体应用程序时,也没有.Text。如何为WPF重新编写以下代码 xbox指的是聊天窗口中的一个框,用户在其中键入文本 注:以下代码适用于WFA private void BoxChatAreaKeyPress(object sender, KeyPressEventArgs e) { var xBox = (RichTextBox) sender;
private void BoxChatAreaKeyPress(object sender, KeyPressEventArgs e)
{
var xBox = (RichTextBox) sender;
//setting a limit so the user cannot type more than 4000 characters at once
xBox.MaxLength = 4000;
if ((xBox.Text.Length > 1) && (e.KeyChar == (char) Keys.Enter))
{
WriteMessage(xBox);
}
}
private static void WriteMessage(RichTextBox xBox)
{
var writer = new StreamWriter(_client.GetStream());
String message = xBox.Text.TrimEnd('\n') + "|" + _font.Name;
writer.WriteLine(message);
writer.Flush();
xBox.Text = null;
}
根据应用程序的复杂性,直接从WinForm转换为WPF可能并不简单。回答你的两个具体问题 1) 正如您所知,WPF中的RichTextBox上没有
MaxLength
属性。解决此问题的一种方法是在用户输入字符后记录字符数,并检查其是否大于您的限制。例如():
2) 同样,您可以使用TextRange
属性获取RTB中的文本:
TextRange xBoxTR = new TextRange(xBox.Document.ContentStart,
xBox.Document.ContentEnd);
string xBoxText = xBoxTR.Text;
这就是我想到的:
private void BoxChatAreaKeyPress(object sender, KeyEventArgs e)
{
var xBox = (RichTextBox)sender;
// Setting a limit so the user cannot type more than 4000 characters at once
var textRange = new TextRange(xBox.Document.ContentStart, xBox.Document.ContentEnd);
var textLen = textRange.Text.Trim();
if (textLen.Length <= 4000)
{
if ((textLen.Length > 1) && (e.Key == Key.Enter))
{
WriteMessage(xBox);
}
}
else
{
e.Handled = true;
}
}
private void-BoxChatAreaKeyPress(对象发送方,KeyEventArgs e)
{
变量xBox=(RichTextBox)发送方;
//设置限制,以便用户一次键入的字符不能超过4000个
var textRange=新的textRange(xBox.Document.ContentStart、xBox.Document.ContentEnd);
var textLen=textRange.Text.Trim();
如果(textLen.Length 1)和(e.Key==Key.Enter))
{
写消息(xBox);
}
}
其他的
{
e、 已处理=正确;
}
}
我不是要你转换整个东西,我只是想知道.Text和.MaxLength的方法。谢谢你没有帮助。。。!然后问具体的问题。至于你的一般性问题(遇到许多困难)如果不学习WPF,您将无法将表单应用程序转换为WPF。您是否在互联网上为每个按键发送全部文本?我认为他确实提出了两个非常合理的具体问题。大多数聊天风格的应用程序只是在某个时间间隔发送一条消息,说“用户正在键入”,然后在他们按下ok时发送整个消息。您不需要附加到字符串,只需从RichTextBox获取文本即可。顺便问一下,你需要RTB吗?标准文本框是否适用于您?它具有MaxLength和Text属性。您可以更改整个框的字体,这似乎是您为RTB所做的全部工作。
private void BoxChatAreaKeyPress(object sender, KeyEventArgs e)
{
var xBox = (RichTextBox)sender;
// Setting a limit so the user cannot type more than 4000 characters at once
var textRange = new TextRange(xBox.Document.ContentStart, xBox.Document.ContentEnd);
var textLen = textRange.Text.Trim();
if (textLen.Length <= 4000)
{
if ((textLen.Length > 1) && (e.Key == Key.Enter))
{
WriteMessage(xBox);
}
}
else
{
e.Handled = true;
}
}