C# WinRT XAML文本框,选择开始和CR/LF
我在我的一个C# WinRT XAML文本框,选择开始和CR/LF,c#,string,xaml,textbox,windows-store-apps,C#,String,Xaml,Textbox,Windows Store Apps,我在我的一个Windows应用商店应用程序中使用了一个简单的多行文本框,我想使用选项卡缩进文本 由于WinRT在文本框上没有XAMLAcceptsTab属性,我想当我检测到Tab键敲击时,我必须手动处理它 问题是:\r\n似乎被SelectionStart属性处理为一个字符而不是两个字符,我没有得到真正的字符位置。 我现在唯一的想法是通过解析文本并为插入符号之前出现的每个\r\n事件向SelectionStart添加1来规范SelectionStart public static class T
Windows应用商店应用程序中使用了一个简单的多行文本框
,我想使用选项卡
缩进文本
由于WinRT在文本框
上没有XAMLAcceptsTab
属性,我想当我检测到Tab键敲击时,我必须手动处理它
问题是:\r\n
似乎被SelectionStart属性处理为一个字符而不是两个字符,我没有得到真正的字符位置。
我现在唯一的想法是通过解析文本并为插入符号之前出现的每个\r\n
事件向SelectionStart
添加1来规范SelectionStart
public static class TextBoxExtension
{
public static int GetNormalizedSelectionStart(this TextBox textBox)
{
int occurences = 0;
string source = textBox.Text;
for (var index = 0; index < textBox.SelectionStart + occurences ; index++)
{
if (source[index] == '\r' && source[index + 1] == '\n')
occurences++;
}
return textBox.SelectionStart + occurences;
}
}
它是有效的,但是。。。我又重新发明了那个圆东西吗?有更干净的方法吗?似乎您必须执行“Ctrl+Tab”操作,才能在文本框中实际插入选项卡。因此,你所要做的就是这样
TextBox_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
e.Handled = true;
SendKeys(^{TAB});
}
}
^
代表CTRL
键和选项卡
您的选项卡键。使用此组合,您可以在应用程序中正常使用Tab键即使问题已过时,您也应该验证答案是否满足了您的需要,以便将来的用户查看,并将问题从未回答列表中删除。
TextBox_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
e.Handled = true;
SendKeys(^{TAB});
}
}