C # - Создание генератора чисел с конкретными номерами, написанными в текстовых полях - PullRequest
0 голосов
/ 27 августа 2018

Добрый день,

Во-первых, вот изображение формы окна: WindowsForm

Итак, конечно, я хочу разработать приложение. Тот, который генерирует список идентификаторов для могил на кладбище. Это должно показать мне идентификаторы в listbox. Пример ID: GTH - 1 - 1 - 1 GTH - 1 - 1 - 2

«GTH» - это значение в текстовом поле рядом с «Friedhof». Другие числа должны быть числами между текстовыми полями выше. Как пример: с (фон) "1" до (бис) "9"

Таким образом, идентификатор должен быть таким: Friedhof - Feld - Reihe - Nr

Игнорировать выпадающие списки с правой стороны. Так что я не знаю с чего начать. Я новичок в C #. Не могли бы вы привести пример кода, когда я нажимаю кнопку «Пуск», он должен выполнить цикл и записать идентификаторы в список.

Мне действительно нужно только знать, с чего начать ...

Вот мой код:

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)
        {

        }
    }
}

1 Ответ

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

Если я вас правильно понял, вы хотите получить все возможные комбинации? Я использовал вложенные циклы, потому что, надеюсь, легче понять.

Вложенные циклы: для каждого значения во внешнем цикле будет выполняться каждое значение во внутреннем цикле.

for(int i = 0; i < 4; i++)
{
  for(int j = 0; j < 3; j++)
  {
    //do something...
  }
}

Для i = 0 внутренний цикл будет выполнен три раза, как для j = 0; j = 1 и j = 2. Теперь я буду увеличиваться на 1. И снова внутренний цикл будет выполнен три раза. Это будет повторяться до тех пор, пока я> = 4.

Пример (не проверено):

private int nFieldFrom = 0;
private int nFieldTo = 0;
private int nRowFrom = 0;
private int nRowTo = 0;
private int nNumberFrom = 0;
private int nNumberTo = 0;


    //Not necessary for the functionality but it is good to validate the user input
    private bool ValidateInput()
    {
       bool blnValid;

       if(!int.TryParse(FieldFrom.Text, out nFieldFrom)
          || !int.TryParse(FieldTo.Text, out nFieldTo)
          || !int.TryParse(RowFrom.Text, out nRowFrom)
          || !int.TryParse(RowTo.Text, out nRowTo)
          || !int.TryParse(NumberFrom.Text, out nNumberFrom)
          || !int.TryParse(NumberTo.Text, out nNumberTo))
        {
          blnValid = false;
        }    
        else
        {
          blnValid = true;
        }

      return blnValid;
    }

    private void btn_Start_Click(object sender, EventArgs e)
    {
        //This list will contain all your ID's
        List<string> lstResults = new List<string>();

        //Every time the button is clicked the user input should be validated
        //GTH field = your 'Friedhof' field
        if(ValidateInput() && !string.IsNullOrEmpty(GTHField.Text))
        {
            for(int f = nFieldFrom; f <= nFieldTo; f++)
            {
                for(int r = nRowFrom; r <= nRowTo; r++)
                {
                    for(int n = nNumberFrom; n <= nNumberTo; n++)
                    {
                        lstResults.Add(string.Format("{0} - {1} - {2} - {3}", GTHField.Text, f, r, n));
                    }
                }
            }

            lb_Ausgabe.DataSource = lstResults;
        }
        else
        {
            //error handling
            //for exmaple show a message box
            //MessageBox.Show("....");
        }
    }
...