Silverlight TextBox'a girilen bir sekmeyi nasıl yakalayabilirim ve 4 boşluğu (veya bir sekmeyi) yerine yerleştirebilirim?Silverlight TextBox'ta yakalama sekmesi
Sekme gezinmeyi nasıl engelleyebileceğimi anlayamıyorum.
Silverlight TextBox'a girilen bir sekmeyi nasıl yakalayabilirim ve 4 boşluğu (veya bir sekmeyi) yerine yerleştirebilirim?Silverlight TextBox'ta yakalama sekmesi
Sekme gezinmeyi nasıl engelleyebileceğimi anlayamıyorum.
metin kutusunun başına gelir. 'Sekme' anahtar:
private const string Tab = " ";
void textBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
int selectionStart = textBox.SelectionStart;
textBox.Text = String.Format("{0}{1}{2}",
textBox.Text.Substring(0, textBox.SelectionStart),
Tab,
textBox.Text.Substring(textBox.SelectionStart + textBox.SelectionLength, (textBox.Text.Length) - (textBox.SelectionStart + textBox.SelectionLength))
);
e.Handled = true;
textBox.SelectionStart = selectionStart + Tab.Length;
}
}
Bu metin seçip ol vurmak bile beklediğiniz sadece nasıl davranır (kod e ben Johannes benzer)' ne olduğunu.
Bir şey daha: Sekme dizgisini "\ t" olarak almayı denedim, ancak boşuna. Sekme oluşturuldu, ancak tek bir boşluğun genişliğiydi - bu nedenle Sekme yapısının dört boşluk olduğu değer.
Sorununuzu nasıl çözeceğimi bilmiyorum, çalıştığı anlaşılan bir çözümü bir araya getirdim.
KeyDown olayını aşağıdaki gibi ayarlayın. LostFocus içinde
void expenses_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
expenses.Text += " ";
expenses.Focus();
expenses.LostFocus += new RoutedEventHandler(expenses_LostFocus);
}
}
Ve sonra:
void expenses_LostFocus(object sender, RoutedEventArgs e)
{
expenses.Focus();
expenses.Select(expenses.Text.Length - 1, 0);
}
LostFocus son satır metnin sonuna düzenleme imlecini ayarlar durumunda
expenses.KeyDown += new KeyEventHandler(expenses_KeyDown);
Ben aşağıdaki kodu koymak aksi halde, odağı aldığında, imleç konumu
Bu benim için iyi iş gibi görünüyordu, ve metin kutusu adının ikinci olay işleyicisi veya sabit kodlama gerektirmez:
void TabbableTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
e.Handled = true;
var tb = ((TextBox)sender);
tb.Text += "\t";
tb.Select(tb.Text.Length, 0);
}
}
Silverlight TextBox kontrolü bir "AcceptsTab" özelliği var mı? Bunu, TextBox tarafından işlenecek sekme tuşu için True olarak ayarlamanız gerekir. –
hayır, Intellisense veya Expression Blend'de bu özelliği görmüyorum –