0
當試圖修改文本並選擇鼠標事件上的TextBox內容時,我注意到左右單擊之間的行爲不同。TextBox右按鈕MouseUp向左按鈕的不同行爲
我捕獲了PreviewMouseDown事件,我注意到當按下鼠標右鍵時,光標移動到文本框的開頭,然後在釋放時返回到最後。
這可以防止選中文本框文本,但左擊時不會發生同樣的情況。
任何想法爲什麼這隻發生在右鍵點擊?任何防止它的方法?
爲了闡明我想要做的是每次用戶在文本框中單擊時遞增/遞減文本框的文本。需要進行選擇,以便用戶可以單擊以修改文本或鍵入他們想要的顯式值,並立即替換文本。
的XAML:
<Window x:Class="WpfSamples.Selection.InTextBoxWithEvent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="InTextBox" Height="300" Width="300">
<Grid>
<TextBox Text="focus away here" VerticalAlignment="Center"
HorizontalAlignment="Center" Width="100" Margin="0,0,0,77"/>
<TextBox Text="click here" VerticalAlignment="Center"
HorizontalAlignment="Center" Width="100" ContextMenu="{x:Null}"
PreviewMouseDown="UIElement_OnPreviewMouseDown"
PreviewMouseUp="UIElement_OnPreviewMouseUp"/>
</Grid>
</Window>
後面的代碼:
public partial class InTextBoxWithEvent
{
public InTextBoxWithEvent()
{
InitializeComponent();
}
private void UIElement_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var textbox = (TextBox)sender;
textbox.Text = DateTime.Now.Millisecond.ToString();
}
private void UIElement_OnPreviewMouseUp(object sender, MouseButtonEventArgs e)
{
var textbox = (TextBox)sender;
textbox.CaretIndex = 0;
textbox.Select(0, textbox.Text.Length);
}
}
當我這樣做,焦點永遠不會離開文本框 – Slugart
這怎麼可能。點擊應用程序中的其他按鈕或文本框,焦點確實消失。如果你想手動放鬆焦點,那麼在代碼中也要這樣做。原來的問題沒有提到重點。 – Versatile
你有沒有試過這個代碼?我剛剛添加了該行,並且點擊底部文本框後,我無法點擊上面的文本框。 – Slugart