0

私はこの質問を提起するために言葉を間違えたかもしれません。これはトリッキーな提案であり、私は緊急に解決策を求めています:-(

2つの異なる方法でトリガーしたいのですtextBox1_KeyDownが、いくつかの基準に基づいて同じキーをキーダウンします。以下のコードは、より明確になります。

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (textBox1.Text == "")
        {
            if (e.KeyCode == Keys.Enter)
            {
                textBox1.Text = "x";
            } 
        }


        if (textBox1.Text != "")
        {
            if (e.KeyCode == Keys.Enter)
            {
                 textBox1.Text = "y";
            }
        }
    }

私がやろうとしているのは、textBox1のEnterボタンを押したときに、テキストがない場合に「x」を表示したいということです。テキストが含まれている場合は、Enterキーを押したときにテキストボックスに「y」を表示します。上記でコーディングした方法を実行すると、両方の手順が1つのインスタンスで発生します。つまり、空白のときにEnterキーを押すと、textBox1「y」(「x」である必要があります)が表示されます。つまり、最初に「x」が表示され、次にテキストボックスに数量が含まれているため、コードで呼び出されるテキストは「y」になります。2つの機能を分離する方法は?? テキストボックスに空白の場合は「x」のみを表示してEnterキーを押すか、空白でない場合は「y」のみを表示してEnterキーを押します。

私は愚かな何かを見逃しているに違いありません..ありがとう..親切にコードをちょうだい。専門用語がほとんどわかりません。

4

5 に答える 5

3

これは、両方のifステートメントが実行されるためです。最初のifステートメントが実行され、テキストボックス内のテキストが空白になりません。これにより、次のifステートメントも起動します。これを行うだけで修正されます。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (textBox1.Text == "")
    {
        if (e.KeyCode == Keys.Enter)
        {
            textBox1.Text = "x";
        } 
    }


    else if (textBox1.Text != "")
    {
        if (e.KeyCode == Keys.Enter)
        {
             textBox1.Text = "y";
        }
    }
}

2番目のifステートメントに「else」が追加されていることに注意してください。

于 2011-03-30T22:30:52.397 に答える
1

まず、次のステートメントが実行されないようreturn;に、最も深くネストされたステートメントを挿入することができます。ifif

もう1つできることは、条件の順序を逆にすることです。そのためif (textBox1.Text != "")、ハンドラーの下部ではなく上部でテストします。

elseそして最後に、2つの条件の間で使用することができます。

于 2011-03-30T22:29:46.520 に答える
1

そこに書いたことに基づいて、ifステートメントの順序を逆にするか、2番目のブロックをelseまたはelseifにすることができます。

于 2011-03-30T22:30:03.087 に答える
1

あなたはこのようなものを探しているので、私は信じています:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    //determine if text is empty or otherwise equal to 'x'...
    if (textBox1.Text == string.Empty || textBox1.Text != "x")
    {
        //confirmed, set to 'x'...
        textBox1.Text = "x";
    }
    else //and a catch-all for y
    {
        //text wasn't empty or 'x', set to 'y'...
        textBox1.Text = "y";
    }
}

三項演算子を使用して、これを簡単に実現することもできます。

//get a copy of the text
var value = textBox1.Text;
//set textbox value to 'x' if not empty or equal to 'x', otherwise 'y'
textBox1.Text = value == string.Empty || value != "x" ? "x" : "y";
于 2011-03-30T22:30:11.973 に答える
1

多分私は何かが足りないのですが、なぜ他のものを追加しないのですか?

private void textBox1_KeyDown(object sender, KeyEventArgs e)    
{
    if (textBox1.Text == "")         
    {
        if (e.KeyCode == Keys.Enter)
        {
            textBox1.Text = "x";
        }
    }

    else if (textBox1.Text != "")
    {
        if (e.KeyCode == Keys.Enter)
        {
            textBox1.Text = "y";
        }
    }
} 
于 2011-03-30T22:30:18.937 に答える