0

再会,

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

所以,我当然想开发一个应用程序。一个为坟墓场的坟墓生成 ID 列表的工具。它应该向我显示listbox. ID 示例:GTH - 1 - 1 - 1 GTH - 1 - 1 - 2

“GTH”是“Friedhof”旁边的文本框中的值。其他数字应该是上面文本框之间的数字。例如:从(冯)“1”到(之二)“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)
        {

        }
    }
}
4

1 回答 1

0

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

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

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

对于 i=0,内部循环将与 j=0 一样执行 3 次;j=1 和 j=2。现在 i 将增加 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("....");
        }
    }
于 2018-08-27T17:40:41.663 回答