JimB_ Ответов: 2

C# как сбросить целочисленную переменную инкремента во второй раз вызывается


namespace ProjectOne
    {
     public partial class MainForm : Form
     {
        public string DataToSetandGet = String.Empty;

      private void StatusBtn_Click(object sender, EventArgs e)
        {
            
            string StatusInfoToshow = "?S\r";
            string commForMeter = string.Format(StatusInfoToshow);

            try
            {
                if (statusofMeter.serialPortForApp.IsOpen)
                {
                    
                    statusofMeter.serialPortForApp.Write(commForMeter);
                }
            }
            catch (Exception)
            {
                statusofMeter.ShowDataInScreenTxtb.Text = "TimeOUT Exception";
            }
        }

public void SerialPortInApp_DataReceived(object sender, 
SerialDataReceivedEventArgs e)
{
DataToSetandGet = serialPortForApp.ReadExisting();
           
string pattern = @"^[a-zA-Z0-9\s\-?\*?\.?\/\:\\r]{1,}$";
Match rgxs = Regex.Match(DataToSetandGet, pattern);

if (rgxs.Success && DataToSetandGet.Length > 50 && DataToSetandGet.IndexOf("\r") == DataToSetandGet.Length - 1)
{
                            
 lineReadCounter++;
 this.BeginInvoke((Action)delegate ()
{
                                ShowDataInScreenTxtb.AppendText(lineReadCounter.ToString() + DataToSetandGet.Substring(4).Replace("\n", " ").Replace("\r", "\r\n"));

 });

  }
}
}
}


Что я уже пробовал:

public void SerialPortInApp_DataReceived(object sender, 
     SerialDataReceivedEventArgs e)
 {
   DataToSetandGet = serialPortForApp.ReadExisting();

   string pattern = @"^[a-zA-Z0-9\s\-?\*?\.?\/\:\\r]{1,}$";

   Match rgxs = Regex.Match(DataToSetandGet, pattern);

   if (rgxs.Success && DataToSetandGet.Length > 50 && DataToSetandGet.IndexOf("\r") 
    == DataToSetandGet.Length - 1)
   {
                            
     lineReadCounter++;
     this.BeginInvoke((Action)delegate ()
     {
      Textbo1.AppendText(lineReadCounter.ToString() + 
      DataToSetandGet.Substring(4).Replace("\n", " ").Replace("\r", "\r\n"));});
     }
   }
 }

 private static int lineReadCounter = 0;
 private void CountReadings()
 {
   //Count Readings
   string[] lines = 
    Regex.Split(textbox1.Text.Trim(), "\r\n");//Trim avoid white spaces
   lineReadCounter = lines.Length;
   label1.Text = "No. Readings: " + lineReadCounter.ToString();

  }



если я нажму кнопку StatusBtn_Click в первый раз, она отобразит lineReadCounter, начиная с 1.
Но если я нажму кнопку во второй раз или несколько раз она вернет lineReadCounter начиная с 2

Как сбросить переменную, чтобы начать с 1 каждый раз, когда кнопка нажата

Patrice T

И каков же вход ?

2 Ответов

Рейтинг:
7

Member 12207816

Вы можете объявить переменную int lineReadCounter = 0 внутри функции btn click.


Рейтинг:
17

Patrice T

Цитата:
Как сбросить переменную, чтобы она начиналась с 1 каждый раз, когда нажимается кнопка ?

самый простой прямой способ-сбросить значение в начале кода кнопки.
lineReadCounter = 0;

Цитата:
если я нажму кнопку StatusBtn_Click в первый раз, она отобразит lineReadCounter, начиная с 1.
Но если я нажму кнопку во второй раз или несколько раз она вернет lineReadCounter начиная с 2

Код делает только то, что вы просили, делая переменную статичной.
private static int lineReadCounter = 0;