C#-创建带有在文本框中编写的特定数字的数字生成器

时间:2018-08-27 11:38:32

标签: c# loops windows-forms-designer

美好的一天,

首先,这是Windows窗体的图像:WindowsForm

因此,我当然想开发一个应用程序。生成墓地坟墓ID列表的程序。它应该在listbox中显示ID。 ID示例: GTH-1-1-1 GTH-1-1-2

“ GTH”是文本框中“ Friedhof”旁边的值。 其他数字应为上述文本框之间的数字。 例如:从(von)“ 1”到(bis)“ 9”

所以ID应该是:Friedhof-Feld-Reihe-Nr

忽略右侧的下拉列表。所以我不知道从哪里开始。我是C#的新手。您能给我一个代码示例,当我按下“开始”按钮时,它应该循环并在列表框中写入ID。

我真的只需要知道如何开始...

这是我的代码:

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 :(得分:0)

如果我对您的理解正确,那么您想获得所有可能的组合吗? 我使用了嵌套循环,因为它希望更容易理解。

嵌套循环:对于外部循环中的每个值,将执行内部循环中的每个值。

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。然后再次执行内部循环3次。这将重复直到i> = 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("....");
        }
    }