Как я могу автоматически увеличивать числа в C #? - PullRequest
8 голосов
/ 04 февраля 2011

Я использую C # 2008 приложение Windows Forms.

В моем проекте есть элемент управления TextBox, и я хочу автоматически сгенерировать числа для сэмплов s00, затем, когда я вернусь к форме снова, следует увеличить ее, как s01, s02, s03 ..... вот так

Пожалуйста, помогите мне

Ответы [ 9 ]

7 голосов
/ 04 февраля 2011

Довольно просто. Сохраните переменную, чтобы сохранить текущее число.

int incNumber = 0;

Затем по нажатию кнопки сгенерируйте числовую строку следующим образом:

string nyNumber = "s" + incNumber.ToString("00");
incNumber++;
4 голосов
/ 04 февраля 2011

Делайте, как предложено Øyvind Knobloch-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 голосов
/ 30 августа 2011

Немного лучшая вариация у Ойвинда-Кноблока-Братена выше:

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

// s00, s01, s02Если вы хотите, скажем, диапазон 0001-9999, просто измените «00» на «0000» и т. Д.

2 голосов
/ 04 февраля 2011

Точно так же, как сказал Ойвинд Кноблох-Бротен: «Следите за целым числом, используя переменную».Только вы должны отформатировать его следующим образом (предпочтительно 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 для полной справки по форматированию целых чисел.

1 голос
/ 20 мая 2015

Если текстовый компонент строки неизвестен (с или без числа в конце строки), могут быть полезны варианты этой функции:

        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;
        }
0 голосов
/ 06 августа 2018

Это решение для генератора с автоматическим увеличением идентификатора в C #, который не нужно увеличивать или делать что-либо. Это будет просто работать. всякий раз, когда новый объект создается, его значение увеличивается на 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; }
    }
0 голосов
/ 29 апреля 2017
{  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 {}}

0 голосов
/ 13 ноября 2012

Еще один однострочный подход:

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

Где counter определяет так:

int counter= 0;
0 голосов
/ 23 мая 2012

Попробуйте это для автоматической генерации числа и автоматического увеличения числа:

// 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...