我正在为WinForms应用程序的一部分编写文本编辑器。它通常有粗体、下划线、删除线和斜体工具栏按钮。但是,出于可访问性和工作流效率的原因,我也希望添加快捷方式。
相关代码如下:
private void TextInput_KeyDown(object sender, KeyEventArgs e)
{
if(e.Control)
{
switch(e.KeyCode)
{
case Keys.B: ChangeFontStyle('B');
break;
case Keys.I: e.SuppressKeypress = true;
ChangeFontStyle('I');
break;
// ... the others (U and S) look like the one for B, with the matching letters...
}
}
}
}
private voide ChangeFontStyle(char targetStyle)
{
switch(targetStyle)
{
case 'B':
if(TextInput.Selectionfont.Bold)
{
TextInput.SelectionFont = new Font(TextInput.Selectionfont, TextInput.Selectionfont.Style ^ FontStyle.Bold);
}
else
{
TextInput.SelectionFont = new Font(TextInput.Selectionfont, TextInput.SelectionFont.Style | FontStyle.Bold);
}
}
}
其他的也像这样,只是分别用斜体、下划线和删除线。三个孩子(如果我不知道的话)
e.SuppressKeyPress
在ctrl-i中,字体顶部设置了一个缩进(倾斜)。StrikeOut不适用于ctrl-s。对于ctrl-shift-s,它可以工作,并且
case 'S'
块从不执行,所以ctrl-s必须在某个地方捕获并用于其他用途。但我肯定不会在其他地方使用它。建议?