問題
在我的Windows Phone 8的C#/ XAML應用程序使用.NET 4.5我通過形式試圖「迭代」。換句話說,當用戶按「輸入」鍵時,焦點更改爲另一個TextBox
或PasswordBox
。「Tab鍵」 字段之間使用的TabIndex
如何我的代碼貌似現在
XAML:
<TextBox TabIndex="0" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="1" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="2" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="3" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="4" KeyDown="TextBox_KeyDown"/>
....
C#代碼隱藏:
using System.Windows.Input;
private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
{
int index = ((TextBox)sender).TabIndex + 1;
//and here is what I've been missing
//basically the code to select next tabindex
//and set focus on it using Focus() method...
}
}
問題
- 如何選擇下一個元素以聚焦於TABINDEX?我知道我應該使用LINQ,選擇usercontrol中的所有文本框,然後選擇帶有tabindex索引的文本框。我慢慢地想到了我自己(也通過與評論中的人討論),但因爲它花了很長時間我寫了問題:)
*(另外,我不確定如何命名的問題,感到自由,如果你認爲你的名字更符合它重新命名它)
解決方案基於薩查的回答
LayoutRoot是用戶控件
private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
{
int index = ((TextBox)sender).TabIndex + 1;
var nextBox = LayoutRoot.Children.OfType<TextBox>().FirstOrDefault((x) => { return x.TabIndex == index; });
if (nextBox != null)
{
nextBox.Focus();
}
}
}
的主網0
非常感謝! :)
我不是最好的在XAML,但在問題風格方面,我看不出問題。看起來你正以同樣的方式接近它 - 你到現在爲止感到不滿嗎?你的代碼評論似乎回答了我以爲你問的問題。 –
第一個問題是「如何選擇下一個元素來聚焦TABINDEX?」 :) – mishan
那麼你有發送者,所以我假設會有一種方法來評估屬性/屬性的值(即TabIndex)。所以你所需要做的就是增加TabIndex來確定哪個文本框應該是'下一個',當你的If語句的計算結果爲真時 - 重點關注它。 –