2

Windowsフォーム:次の条件がすべて当てはまる場合は「これを行う」、そうでない場合は「これを行う」と言う方法はありますか?私のフォームには複数のテキストボックスがあり、そのうちの少なくとも1つに何かを入力する必要があります。以下のコードは空のテキストボックスをチェックしますが、テキストボックスのいずれかが空の場合、条件をfalseに設定します。

private void cmdEnter_Click(object sender, EventArgs e)
{
    bool allempty = true;
    foreach (Control d in Controls)
    {
        if (d is TextBox)
        { 
            TextBox textbox = d as TextBox;
            if (textbox.Text == string.Empty)
            {
                allempty = false; 
            }
        }
    }
    if (allempty == false)
    {
        MessageBox.Show("Textboxes are all empty");
    }
    else
    {
        //Data entry code
        MessageBox.Show("Entry Added");
    }
}
4

3 に答える 3

5

.NET 3.5以降では、linqを使用して次のようにすることができます。

    private void cmdEnter_Click(object sender, EventArgs e)
    {
        if (Controls.OfType<TextBox>().All(tb => String.IsNullOrEmpty(tb.Text)))
        {
            MessageBox.Show("Textboxes are all empty");
        }
        else
        {
            MessageBox.Show("Entry Added");
        }
    }
于 2013-03-06T20:46:09.973 に答える
4

はい、LINQから使用するだけですAny(またはAll、どちらが適切かによって異なります)。

if(Controls.OfType<TextBox>()
        .Any(textbox => textbox.Text == ""))
    MessageBox.Show("Textboxes are all empty");
else
    MessageBox.Show("Entry Added");
于 2013-03-06T20:31:55.683 に答える
3
if(Controls.OfType<TextBox>().Any(x => x.Text == ""))
    // at least one is empty

変数名からすると、次のものが必要なようです。

if(Controls.OfType<TextBox>().Any(x => x.Text != ""))
    // at least one isn't empty

または:

if(Controls.OfType<TextBox>().All(x => x.Text == ""))
    // all are empty
于 2013-03-06T20:32:04.263 に答える