ProcessBar counter C#

本文关键字:counter ProcessBar | 更新日期: 2023-09-27 18:21:27

我有一个关于C#上ProcessBar的问题,如果在列表框中传递项目时使用的方法成功,我将如何将值1添加到标签?

我有一个类似的方法

private static  Form1 f1 = Application.OpenForms["Form1"] as Form1;
public static void GroupList1(processBar bar)
{
 f1.listBox1.Items.Add("User1");
 bar.Value = 100;
}
public static void GroupList2(processBar bar2)
{
 f1.listBox1.Items.Add("User2");
 bar.Value = 100;
} // Etc, etc - up to GroupList6

我也想有一个标签,告诉我有多少用户的成功添加(使用栏),我正在考虑添加这样的方法:

if (bar.Value = 100)
{
  f1.label1.Text = "" + 1; 
}

在我的GroupList1/2方法内部,但标签总是显示为值1。

这个方法在我的代码的主要形式中加载了一个单独的标签:

for(int i = 0; int i < listBox1.Items.Count; i++)
{ 
 label2.Text = i.ToString();
} 

所以,如果用户成功加载到我的列表框中,我希望标签1增加1,我该怎么做?

显然,这实际上不是我在程序中使用的代码,如果所选索引发生变化,就会使用一个方法(这就是为什么我想增加1,以确保用户成功解析该方法),但问题仍然如所述,谢谢。

ProcessBar counter C#

我不太明白你想要实现什么,但如果你只着眼于增加这样的标签的价值,那么你可以通过轻松做到这一点

if (bar.Value = 100)
{
  f1.label1.Text = ""+(int.Parse(f1.label1.Text)+1); 
}

或者如果由于某种原因标签的文本不是整数,甚至是初始化字符串的更好方法

if (bar.Value == 100)
     {
       int value;
        if(!int.TryParse(f1.label1.Text,out value))
         {
           f1.label1.Text = "1";
         }
        else
        {
             f1.label1.Text = ""+(value+1); 
        }
     }

但最好的方法是在一个单独的变量中跟踪值,只更新标签的内容。

将实际计数存储在标签的Text属性中不是一个好主意,而是创建一个变量:

private static int count;

现在,把你的代码改成这样:

if (bar.Value = 100)
{
    // Add 1
    count += 1; 
    // Update the UI
    f1.label1.Text = count.ToString(); 
}