【问题标题】:How can I automatically increment numbers in C#?如何在 C# 中自动增加数字?
【发布时间】:2011-06-21 07:47:44
【问题描述】:

我正在使用 C# 2008 Windows 窗体应用程序。

在我的项目中有一个TextBox 控件,我想为样本 s00 自动生成数字,接下来当我再次返回表单时,它应该像 s01、s02、s03 一样递增..... .喜欢这样

请帮帮我

【问题讨论】:

    标签: c# .net winforms auto-increment


    【解决方案1】:

    很简单。保留一个变量来保留当前的数字。

    int incNumber = 0;
    

    然后点击按钮,生成这样的数字字符串:

    string nyNumber = "s" + incNumber.ToString("00");
    incNumber++;
    

    【讨论】:

    • 我认为你仍然需要增加数字。 ;)
    【解决方案2】:

    按照 Øyvind Knobloch-Bråthen 的建议进行操作,但如果您希望在 formDeactivatedActivated 时自动完成(你回到表格并给它焦点)然后你可以做这样的事情。

    仅当您确定框中的文本将始终采用上述格式时才有效

    this.Activated += (s, ev)=>{ 
             string tmp = textbox1.Text; 
             int num = String.Substring(1) as int;              
             if(nuum != null) 
             {
                 num++;
                 textbox1.Text = "s" + num.Tostring();  
             }
          };
    

    【讨论】:

      【解决方案3】:

      正如 Øyvind Knobloch-Bråthen 所说:使用变量跟踪整数。只有你应该像这样格式化它(微软首选):

      int incNumber = 0;
      
      string formattedIncNumber = String.Format("s{0:D2}", incNumber);
      incNumber++;
      

      或者如果你想用少一行代码来做:

      int incNumber = 0;
      
      string formattedIncNumber = String.Format("s{0:D2}", incNumber++);
      

      有关格式化整数的完整参考,请参阅 MSDN

      【讨论】:

        【解决方案4】:

        上面的 oyvind-knobloch-brathen 的一个稍微好一点的变体:

        int incNumber=0;
        s + String.Format("{0:00}", incNumber);  
        incNumber++;
        

        //s00, s01, s02.如果你想要,比如说,0001-9999 的范围,只需将“00”更改为“0000”等。

        【讨论】:

          【解决方案5】:

          试试这个自动生成数字和自动递增数字:

          // Stock is table name
          // metal id is unique number that is auto generated as well as auto incremented
          
          
          private void textBox9_TextChanged(object sender, EventArgs e)
          {
              string s = "select max(metalid)+1 from stock";
              SqlCommand csm = new SqlCommand(s, con);
          
              con.Open();
              csm.ExecuteNonQuery();
          
              SqlDataReader dd = csm.ExecuteReader();
          
              while (dd.Read())
              {
                  int n = dd.GetInt32(0);
                  textBox1.Text = n.ToString();
              }
          
               con.Close();
          }
          

          【讨论】:

          • OP 不处理数据库。
          【解决方案6】:

          另一种单行方法是:

          string sampleNum = "s" + (counter++).ToString("00");
          

          counter定义如下:

          int counter= 0;
          

          【讨论】:

            【解决方案7】:

            如果字符串的文本部分未知(字符串末尾有或没有数字),此函数的变体可能会有所帮助:

                    private string increment_number_at_end_of_string(string text_with_number_at_the_end)
                    {
                        string text_without_number = text_with_number_at_the_end.TrimEnd('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
                        string just_the_number = text_with_number_at_the_end.Substring(text_without_number.Length);
            
                        int number = -1;
                        if (int.TryParse(just_the_number, out number))
                        {
                            return text_without_number + (number + 1).ToString();
                        }
                        return text_with_number_at_the_end;
                    }

            【讨论】:

              【解决方案8】:
              {  try {  //madhura//  SqlCommand cmd1 = new SqlCommand(@"select 'Column_name'+ REPLACE(STR(MAX(CAST(Right(Column_name,5) as int)+1 ),6),SPACE(1),'0') as Column_name from TabelName ", con);  SqlDataAdapter da = new SqlDataAdapter(cmd1);   DataTable dt = new DataTable();  da.Fill(dt);
              

              if (dt.Rows[0]["Column_name'"].ToString() == null) { Label1.Text = "DMBP-000001"; } else{ Label.Text=dt.Rows[0]["Column_name'"].ToString(); } } 捕捉 { } }

              【讨论】:

              • 跟题有什么关系?
              【解决方案9】:

              这是在 C# 中生成器自动递增 id 的解决方案,不需要增加或做任何事情。它会起作用的。每当创建一个新对象时,它的值就会增加 1。

              public class Employee
                  {
                      static long AutoId = 0;
                      public long Id { get; private set; } = ++AutoId;
                      public string EmployeeName { get; set; }
                      public string Address { get; set; }
                  }
              

              【讨论】:

                猜你喜欢
                • 2020-01-07
                • 2020-09-04
                • 2019-09-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-01-19
                • 2013-05-21
                相关资源
                最近更新 更多