在鍵盤按鈕名稱退格不作爲退格鍵多個文本框工作。
對於單個文本框我寫這個代碼併成功。
textbox.text = textbox.Text.Remove(textbox.Textlength-1,1);
但不適用於多個文本框。
在鍵盤按鈕名稱退格不作爲退格鍵多個文本框工作。
對於單個文本框我寫這個代碼併成功。
textbox.text = textbox.Text.Remove(textbox.Textlength-1,1);
但不適用於多個文本框。
編輯請注意,這是一個WPF答案,但問題是關於winforms。現在我會留下答案,以防有人用WPF查找同樣的東西。
可以使用FocusManager.IsFocusScope
屬性:
<StackPanel>
<StackPanel x:Name="tbElements" FocusManager.IsFocusScope="True">
<TextBox x:Name="tb1" Margin="3" VerticalAlignment="Top"/>
<TextBox x:Name="tb2" Margin="3" VerticalAlignment="Top"/>
</StackPanel>
<Button Content="Test" Margin="3" Height="26" Click="Button_Click"/>
</StackPanel>
然後將文本框在一個單獨的邏輯焦點範圍
private void Button_Click(object sender, RoutedEventArgs e)
{
var test1 = FocusManager.GetFocusedElement(this);
var test2 = FocusManager.GetFocusedElement(tbElements);
}
結果將是管理,是test1
引用點擊的按鈕,因爲它具有當前焦點,但test2
引用最後一個焦點文本框,因爲它在其單獨的邏輯焦點範圍內具有本地焦點。
另一種方法是將Button
屬性Focusable
設置爲False
,因此如果單擊按鈕時文本框具有焦點,焦點將保留在文本框內。這可以防止鍵盤導航到按鈕,但由於按鈕是屏幕鍵盤的一部分,因此這可能是可以接受的甚至是所需的行爲。
嗨..grek40 ..當我專注於條碼文本框,然後退格工作條碼。當我專注於名稱,然後退格不起作用..... –
@MuhammadIrfan動態確定活動文本框的重要性,不僅僅是使用一個特定文本框元素的變量。這就是爲什麼我在這個答案中使用焦點經理。 – grek40
我敢肯定,OP不希望執行多個文本框退格,而想退格按鈕影響當前重點的文本框,所以:
要模擬的,而不是當前實現鍵盤筆畫使用SendKeys.Send(string keys)。這將在具有集中控制執行BACKSPACE
:
private void backspace_Click(object sender, EventArgs e)
{
//{BACKSPACE}, {BS}, or {BKSP}
SendKeys.Send("{BACKSPACE}");
}
我不明白你的多個文本框的意思,但看看[的SendKeys(https://msdn.microsoft.com/en-us /library/system.windows.forms.sendkeys.send(v=vs.110).aspx) – Pikoh
在用戶單擊按鈕之前,您必須知道哪個TextBox具有焦點*。使用他們的Enter事件來更新名爲LastTextBox的變量。如果這應該是一個觸摸屏界面,那麼可以考慮在用戶單擊文本框時彈出鍵盤。 –
考慮讓你的屏幕鍵盤[非可聚焦](https://msdn.microsoft.com/en-us/library/system.windows.iinputelement.focusable.aspx),所以你可以檢查按鈕點擊。這是合理的,因爲按鈕焦點主要用於鍵盤導航,並且不需要在屏幕鍵盤中進行鍵盤導航。 – grek40