在 RichTextBox 中设置斜体时防止制表符
Prevent tab when setting Italic in RichTextBox
我正在使用 RichTextBox
为自己制作一个笔记应用程序,但我在使用字体 "Styling" 时遇到了一些问题。
我绑定 Ctrl+I 以将所选文本设置为斜体,这是有效的。但出于某种原因,每当我这样做时,它都会添加一个选项卡,删除所有选定的文本。
我能找到的唯一一个遇到这个问题的人是通过添加 e.SuppressKeyPress=true; 解决的。但这对我也不起作用。
private void txbMain_KeyUp(object sender, KeyEventArgs e)
{
if((e.KeyCode==Keys.B && e.Modifiers == Keys.Control) || (e.KeyCode==Keys.F && e.Modifiers==(Keys.Control | Keys.Shift)))
{
FontHelper.Bold(this);
}
else if(e.KeyCode==Keys.I && e.Modifiers == Keys.Control)
{
if (txbMain.SelectionFont != null)
{
e.SuppressKeyPress = true;
System.Drawing.Font currentFont = txbMain.SelectionFont;
System.Drawing.FontStyle newFontStyle;
if (txbMain.SelectionFont.Italic == true)
{
newFontStyle = FontStyle.Regular;
}
else
{
newFontStyle = FontStyle.Italic;
}
txbMain.SelectionFont = new Font(
currentFont.FontFamily,
currentFont.Size,
newFontStyle
);
}
}
}
组合CTRL + I 似乎是richtextbox 进入标签的默认功能。即使您在 richtextbox 上没有任何代码或事件,您的文本也会被替换。所以问题是,您的事件确实会在此默认功能之后触发,并且一旦代码达到您的文本格式,文本就会被删除。
最简单的解决方案是使用 KeyDown 事件而不是 KeyUp。
我正在使用 RichTextBox
为自己制作一个笔记应用程序,但我在使用字体 "Styling" 时遇到了一些问题。
我绑定 Ctrl+I 以将所选文本设置为斜体,这是有效的。但出于某种原因,每当我这样做时,它都会添加一个选项卡,删除所有选定的文本。
我能找到的唯一一个遇到这个问题的人是通过添加 e.SuppressKeyPress=true; 解决的。但这对我也不起作用。
private void txbMain_KeyUp(object sender, KeyEventArgs e)
{
if((e.KeyCode==Keys.B && e.Modifiers == Keys.Control) || (e.KeyCode==Keys.F && e.Modifiers==(Keys.Control | Keys.Shift)))
{
FontHelper.Bold(this);
}
else if(e.KeyCode==Keys.I && e.Modifiers == Keys.Control)
{
if (txbMain.SelectionFont != null)
{
e.SuppressKeyPress = true;
System.Drawing.Font currentFont = txbMain.SelectionFont;
System.Drawing.FontStyle newFontStyle;
if (txbMain.SelectionFont.Italic == true)
{
newFontStyle = FontStyle.Regular;
}
else
{
newFontStyle = FontStyle.Italic;
}
txbMain.SelectionFont = new Font(
currentFont.FontFamily,
currentFont.Size,
newFontStyle
);
}
}
}
组合CTRL + I 似乎是richtextbox 进入标签的默认功能。即使您在 richtextbox 上没有任何代码或事件,您的文本也会被替换。所以问题是,您的事件确实会在此默认功能之后触发,并且一旦代码达到您的文本格式,文本就会被删除。
最简单的解决方案是使用 KeyDown 事件而不是 KeyUp。