Проверьте, равен ли выбранный элемент, иначе не делайте этого - PullRequest
0 голосов
/ 28 августа 2018

Добрый день,

Итак, у меня есть 3 цикла, которые в любом случае не имеют значения. Но я хочу поместить их в метод if. Я использую winforms, и я хочу, чтобы приложение только выполняло циклы, ЕСЛИ выбранный элемент моего выпадающего списка / выпадающего списка - "arabisch". Не могли бы вы помочь мне исправить мой код? визуальная студия зеленым цветом пометила строку с оператором 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 голосов
/ 28 августа 2018
ddl_Feld.SelectedItem == "Arabisch"

С помощью этой строки вы проверяете, совпадает ли ссылка на ddl_Feld.SelectedItem с "Arabisch". Что это не так.

Вы должны изменить сравнение на

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

Строки не следует сравнивать с ==.

0 голосов
/ 28 августа 2018

Так как Combobox.SelectedItem возвращает объект, а не строку, поэтому он пометил зеленую линию на if. Там может быть несколько возможностей, которые вы можете попробовать вместо

ddl_Feld.SelectedItem == "Arabisch" 

вы можете использовать

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

или

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

или

ddl_Feld.Text == "Arabisch"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...