0
我想達到的目標與在stackoverflow中的編輯器類似。其中,如果我按大膽,它會纏上了我的選擇的文本有一些文字(在這種情況下**)C#:我如何修改選定的文本/包裝內容等?
我想達到的目標與在stackoverflow中的編輯器類似。其中,如果我按大膽,它會纏上了我的選擇的文本有一些文字(在這種情況下**)C#:我如何修改選定的文本/包裝內容等?
public Window1()
{
InitializeComponent();
textBox.KeyDown += OnTextBoxKeyDown;
}
private void OnTextBoxKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.B
&& (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
string boldText = "**";
int beginMarkerIndex = textBox.SelectionStart;
int endMarkerIndex = beginMarkerIndex + textBox.SelectionLength + boldText.Length;
textBox.Text = textBox.Text.Insert(beginMarkerIndex, boldText)
.Insert(endMarkerIndex, boldText);
}
}
未測試:
TextBox textBox;
// ...
string bolded = "**" + textBox.SelectedText + "**";
int index = textBox.SelectionStart;
textBox.Text.Remove(textBox.SelectionStart, textBox.SelectionLength);
textBox.Text.Insert(index, bolded);
感謝,但我真的不明白爲什麼你需要使用'e.Key&Key.B'不能只是'e.Key == Key.Tab'嗎?對於'(Keyboard.Modifiers&ModifierKeys.Control)== ModifierKeys.Control' ...哦,我也注意到使用'&'這是什麼?但爲了進一步說明,如何按Ctrl + Shift + B(作爲示例)如何按下 – 2010-08-25 15:11:08
@ jiewmeng:實際上,你是對的,在這種情況下,e.Key == Key.B可以。 &pattern(按位AND)用於Flags枚舉。基本上,ModifierKeys枚舉可以同時處於幾個「狀態」,因此您可以測試某個特定的「狀態」是否有效。 http://msdn.microsoft.com/en-us/library/ms229062.aspx – Ani 2010-08-25 15:39:36
@jiewmeng:要測試'Shift'是否也被按下,請添加&&(Keyboard.Modifiers&ModifierKeys.Shift)== ModifierKeys.Shift )到條件。 – Ani 2010-08-25 15:41:26