如何在C#中自动增加数字?

时间:2011-02-04 11:52:22

标签: c# .net winforms auto-increment

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

在我的项目中有一个TextBox控件,我希望为样本s00自动生成数字,接下来当我再次回到形式时,它应该像s01,s02,s03一样增量... ......就像那样

请帮帮我

9 个答案:

答案 0 :(得分:7)

非常简单。保留一个变量以保持当前的数字。

int incNumber = 0;

然后点击按钮,生成如下数字字符串:

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

答案 1 :(得分:4)

按照ØyvindKnobloch-Bråthen的建议进行操作,但如果您希望在表单 停用已激活时自动完成(你回到表格并给予关注)然后你可以做这样的事情。

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

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

答案 2 :(得分:2)

正如ØyvindKnobloch-Bråthen所说:使用变量跟踪整数。只有您应该像这样格式化(Microsoft首选):

int incNumber = 0;

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

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

int incNumber = 0;

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

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

答案 3 :(得分:2)

oyvind-knobloch-brathen的变化稍微好一些:

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

// s00,s01,s02。如果您想要,例如,范围0001-9999,只需将“00”更改为“0000”等。

答案 4 :(得分:1)

如果字符串的文本组件未知(在字符串末尾有数字或没有数字),则此功能的变体可能会有所帮助:

        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;
        }

答案 5 :(得分:0)

尝试此操作用于自动生成数字的数字和自动增量:

// 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();
}

答案 6 :(得分:0)

另一种单线方法是:

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

计数器定义如下:

int counter= 0;

答案 7 :(得分:0)

这是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; }
    }

答案 8 :(得分:-2)

{  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(); }} catch {}}