Làm cách nào để chụp một tab được nhập trong Hộp văn bản Silverlight và hiển thị 4 dấu cách (hoặc một tab) ở vị trí của nó?Tab chụp trong Hộp văn bản Silverlight
Tôi không thể tìm ra cách chặn điều hướng tab.
Làm cách nào để chụp một tab được nhập trong Hộp văn bản Silverlight và hiển thị 4 dấu cách (hoặc một tab) ở vị trí của nó?Tab chụp trong Hộp văn bản Silverlight
Tôi không thể tìm ra cách chặn điều hướng tab.
Cô ấy e là những gì tôi làm (tương tự như mã của Johannes):
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;
}
}
Điều này hoạt động như bạn mong đợi ngay cả khi bạn chọn một số văn bản và nhấn phím '' Tab 'ol'.
Một điều nữa: Tôi đã thử có chuỗi tab là "\ t", nhưng không có kết quả. Tab được hiển thị, nhưng là chiều rộng của một dấu cách - do đó giá trị cho tab const là bốn dấu cách.
Tôi không chắc chắn làm thế nào để giải quyết vấn đề của bạn, tôi đã tấn công với nhau một giải pháp mặc dù điều đó dường như hoạt động.
Đặt sự kiện KeyDown như bên dưới.
expenses.KeyDown += new KeyEventHandler(expenses_KeyDown);
Trong trường hợp đó tôi đặt đoạn mã sau:
void expenses_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
expenses.Text += " ";
expenses.Focus();
expenses.LostFocus += new RoutedEventHandler(expenses_LostFocus);
}
}
Và sau đó trong LostFocus:
void expenses_LostFocus(object sender, RoutedEventArgs e)
{
expenses.Focus();
expenses.Select(expenses.Text.Length - 1, 0);
}
Dòng cuối cùng trong LostFocus đặt con trỏ soạn thảo vào cuối văn bản , nếu không, khi lấy nét, vị trí con trỏ nằm ở đầu hộp văn bản
này dường như làm việc tốt cho tôi, và không đòi hỏi việc xử lý sự kiện thứ hai hoặc mã hóa cứng của tên hộp văn bản:
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);
}
}
Liệu các TextBox kiểm soát trong Silverlight có một "AcceptsTab" bất động sản? Bạn cần phải đặt True thành phím tab để được TextBox xử lý. –
không, tôi không thấy thuộc tính đó trong Intellisense hoặc trong Expression Blend –