0

ユーザーがスペースを書き込むことを許可してはならないテキスト ボックスがあります。

これまでのところ、私はこのコードを持っています:

private void SearchCriteria_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key.ToString() == "Space")
    {
        DelLast = SearchCriteria.Text;
        NeedsToDelete = true;
    }
}

private void SearchCriteria_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (NeedsToDelete == true)
    {
        SearchCriteria.Text = DelLast;
        NeedsToDelete = false;
    }
}

動作しますが、カーソルがテキストの前に置かれています。これを行う別の方法はありますか?

4

2 に答える 2

0

OnKeyDown イベントでSelectionStartを保存し、OnKeyUpEvent 内で再度設定します。

private void SearchCriteria_KeyDown(object sender, System.Windows.Input.KeyEventArgs e
{
    if (e.Key.ToString() == "Space")
    {
        DelLast = SearchCriteria.Text;
        NeedsToDelete = true;
        _selectionStart = SearchCriteria.SelectionStart;
    }
}
private void SearchCriteria_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (NeedsToDelete == true)
    {
        SearchCriteria.Text = DelLast;
        SearchCriteria.SelectionStart = _selectionStart;
        NeedsToDelete = false;
    }
}
于 2013-07-19T18:47:13.613 に答える
0

これを試して :

    private void SearchCriteria_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (NeedsToDelete == true)
        {
            SearchCriteria.Text = DelLast;
            NeedsToDelete = false;
            SearchCriteria.Select(SearchCriteria.Text.Length, 0);
        }
    }
于 2013-07-19T13:37:56.817 に答える