检查所选项目是否相等,否则不要这样做

时间:2018-08-28 08:15:42

标签: c# winforms loops

美好的一天,

所以我有3个无关紧要的循环。但我想将它们放入if方法中。我使用winforms,如果我的组合框/下拉列表中的选定项目为“ arabisch”,则我只希望应用程序执行循环。您能帮我修改代码吗? visual studio绿色用if语句标记该行。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Friedhof_Generator
{
    public partial class frm_Grabnummer : Form
    {
        public frm_Grabnummer()
        {
            InitializeComponent();

            ddl_Feld.Items.Add("Arabisch");
            ddl_Feld.Items.Add("Römisch");
            ddl_Feld.Items.Add("Alphabetisch");

            ddl_Reihe.Items.Add("Arabisch");
            ddl_Reihe.Items.Add("Römisch");
            ddl_Reihe.Items.Add("Alphabetisch");

            ddl_Nr.Items.Add("Arabisch");
            ddl_Nr.Items.Add("Römisch");
            ddl_Nr.Items.Add("Alphabetisch");
        }

        private void ddl_Feld_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void btn_Start_Click(object sender, EventArgs e)
        {
            int FeldVon, FeldBis, ReiheVon, ReiheBis, NrVon, NrBis;
            string Friedhof;

            FeldVon = int.Parse(tb_Von_Feld.Text);
            FeldBis = int.Parse(tb_Bis_Feld.Text);
            ReiheVon = int.Parse(tb_Von_Reihe.Text);
            ReiheBis = int.Parse(tb_Bis_Reihe.Text);
            NrVon = int.Parse(tb_Von_Nr.Text);
            NrBis = int.Parse(tb_Bis_Nr.Text);
            Friedhof = tb_Friedhof.Text;

            if (ddl_Feld.SelectedItem == "Arabisch")
            {


                while (NrVon < NrBis)
                {
                    lb_Ausgabe.Items.Add(string.Format("{0} - {1} - {2} - {3}", Friedhof, FeldVon, ReiheVon, NrVon));
                    NrVon++;

                    if (NrVon == NrBis)
                    {
                        break;
                    }
                }
                while (ReiheVon < ReiheBis)
                {
                    lb_Ausgabe.Items.Add(string.Format("{0} - {1} - {2} - {3}", Friedhof, FeldVon, ReiheVon, NrVon));
                    ReiheVon++;

                    if (ReiheVon == ReiheBis)
                    {
                        break;
                    }
                }
                while (FeldVon < FeldBis)
                {
                    lb_Ausgabe.Items.Add(string.Format("{0} - {1} - {2} - {3}", Friedhof, FeldVon, ReiheVon, NrVon));
                    FeldVon++;

                    if (FeldVon == FeldBis)
                    {
                        lb_Ausgabe.Items.Add(string.Format("{0} - {1} - {2} - {3}", Friedhof, FeldVon, ReiheVon, NrVon));
                        break;
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

ddl_Feld.SelectedItem == "Arabisch"

使用此行,您检查ddl_Feld.SelectedItem的引用是否与“ Arabisch”的引用相同。不是。

您应该将比较更改为

ddl_Feld.SelectedItem.Equals("Arabisch", StringComparison.CurrentCultureIgnoreCase)

不应将字符串与==进行比较。

答案 1 :(得分:1)

由于Combobox.SelectedItem返回一个对象而不是字符串,因此它标记了if上的绿线。您可能会尝试一些替代方法

ddl_Feld.SelectedItem == "Arabisch" 

您可以使用

ddl_Feld.SelectedItem.ToString() == "Arabisch"

ddl_Feld.GetItemText(ddl_Feld.SelectedItem) == "Arabisch"

ddl_Feld.Text == "Arabisch"