-1

ユーザーが「[」と「]」の文字を入力できないテキストボックスがあります。ただし、デフォルトで「[」と「]」の両方を含む値にテキストを設定したいと思います。どうすればこれに取り組むことができますか?これは私のコードです:

TextBox txtEdit = new TextBox();
txtEdit.TextChanged += txtEdit_TextChanged;
txtEdit.Text = "[Test]";

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
    if ((sender as TextBox).Text.Contains("[") || (sender as TextBox).Text.Contains("]"))
    {
        MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
        (sender as TextBox).Text = "";
    }
}
4

4 に答える 4

1

プロパティを変更した後にTextChangedイベントを配置しますText

TextBox txtEdit = new TextBox();
txtEdit.TextChanged += txtEdit_TextChanged;

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
    if (comboBoxYou.Text == txtEdit.Text) 
    {
        return;
    }
    else if ((sender as TextBox).Text.Contains("[") || (sender as TextBox).Text.Contains("]"))
    {
        MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
        (sender as TextBox).Text = "";
    }
}
于 2013-03-20T10:51:52.047 に答える
1

keydownテキストボックスのイベントを設定します。

ユーザーが「[」および「]」文字を操作したくない場合は、キー文字を読み込み、不要な文字とe.Handled = true一致するかどうかを設定します。

于 2013-03-20T11:02:20.240 に答える
0

ToonCasteeleの答えは良い解決策です。それ以外の場合は、フォームにブール値を追加してみてください。ユーザーが値を選択したら、それをtrueに設定し、TextChangedイベントの値がtrueかどうかを確認します。

private bool IsSelectedItemText; //set it to true when an item is selected

次に、次のチェックを行います。

if(!IsSelectedItemText)
    //Check for square brackets
else
    //Add text from item

また、これは質問に直接関係していませんが、「sender」オブジェクトを1回だけキャストすることを強くお勧めします。完了すると、コードは次のようになります。

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
    TextBox tb = sender as TextBox;

    if(!IsSelectedItemText)
    {            
        if (tb.Text.Contains("[") || tb.Text.Contains("]"))
        {
            MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
            tb.Text = "";
        }
    }
    else
    {
        //Set text from selected item
    }

    IsSelectedItemText = false;
}

アイテムを選択するときは、boolean-variableを「true」に設定することを忘れないでください。

于 2013-03-20T10:55:51.727 に答える
0

それがあなたが望んでいたものなら。

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
string a = (sender as TextBox).Text.substing(0,1).subsctring;
a = a.Remove(0, 1);
            a = a.Remove(a.Length - 1, 1);
            if (a.Contains('[') || a.Contains(']') )
            {
                MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            (sender as TextBox).Text = "[" + a.Replace("[", "").Replace("]", "") + "]";

}
于 2013-03-20T11:31:08.673 に答える