【问题标题】:Set the Progress Bar Value according to data entered?根据输入的数据设置进度条值?
【发布时间】:2014-11-07 15:27:02
【问题描述】:

如何根据表单上每个控件中输入的数据设置进度条值增加/减少?我的意思是,我正在处理多个控件,所以去一个示例[假设我有 四个文本框,进度条最大 100,当输入 txt_1 时,进度值必须增加到 100/4= 25,如果我从 txt_1 中删除数据,则值应该减少到零。

对不起我的语言,我的英语不好。

谁能帮帮我,拜托.....谢谢。

【问题讨论】:

  • A = 控制数量。 B = 具有价值的控制数量。然后计算 B/A。当用户输入任何控件时,您必须重新计算 B/A。
  • 你能给我解释一下吗..拜托..

标签: vb.net visual-studio-2010


【解决方案1】:

您要做的第一件事是将表单加载事件中的进度条最大值设置为您正在使用的文本框数。

Dim TextBoxNumber As Integer = 4
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ProgressBar1.Maximum = TextBoxNumber
End Sub

那么你需要做 2 个事件。
1. TextBox 进入事件。"Private Sub TextBox_Enter(sender As Object, e As EventArgs)"
2. TextBox TextChanged事件“Private Sub TextBox_TextChanged(sender As Object, e As EventArgs)”

然后将您要使用的所有文本框链接到事件。

在这些事件中,您将使用 Sender。
制作一个 Dim 并将发件人转换为类型 Textbox 以使用其属性。" Dim TextControl As TextBox = CType(sender, TextBox)"

在 Enter 事件中,您计算​​在文本框中输入的文本。
如果计数为 0,则将布尔值设置为 true,如果计数大于 0,则将布尔值设置为 False。
您将在 Text Change 事件中使用此布尔值。

Dim CheckTextBox As Boolean
Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles TextBox4.Enter, TextBox3.Enter, TextBox2.Enter, TextBox1.Enter
    Dim TextControl As TextBox = CType(sender, TextBox)
    If TextControl.Text.Count > 0 Then
        CheckTextBox = False
    Else
        CheckTextBox = True
    End If
End Sub

在文本更改事件中,您需要做一些事情。
1.使用if语句检查文本框是否为空。“只有当用户删除文本框中的文本时才会触发。”
因此,如果为空,请从进度条中删除 1 并将 CheckTextBox"Boolean" 设置为 True
“ProgressValue = ProgressValue - 1”
"CheckTextBox = True"

2.然后使用 ElseIf 来检查 CheckTextBox"Boolean" 是否为 True。
如果为 true,则将 1 添加到进度条并将布尔值设置为 false。
“进度值 = 进度值 + 1”
"CheckTextBox = False"

您需要将布尔值设置为 false,否则每次向文本框添加 somthing 时都会添加 25。

Dim ProgressValue As Integer
Private Sub TextBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextChanged, TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged
    Dim TextControl As TextBox = CType(sender, TextBox)

    If TextControl.Text = "" Then
        ProgressValue = ProgressValue - 1
        CheckTextBox = True

    ElseIf CheckTextBox = True Then
        ProgressValue = ProgressValue + 1
        CheckTextBox = False
    End If
    ProgressBar1.Value = ProgressValue
End Sub

【讨论】:

  • 它不适用于我的组合框,你能再帮忙吗? ?我正在使用 Dotnetbar ComboBoxEx
  • @Koyas 我不知道 dotnetbar。但是组合框有 SelectedIndexChanged 事件吗?如果是,请使用它。
  • 我正在充分考虑您的所有帮助,这也是一件很棒的事情,对不起,实际上我是 VB 的新手。当我使用 SelectedIndexChanged 事件时,它的所有功能都是正确的,但是当组合框文本变为空白时,progressValue 没有减少,我尝试了组合框 TextChanged 事件中的代码。同时-在combobox1中正确输入progressValue,然后我选择了没有文本的Combo2,然后重新选择了Combo1,progressVal变为零,Combo1也保留了文本。
  • DotNetBar 我之前提到的是一些比 Windows 默认组件具有附加功能的组件,您可以在 THIS link 中找到。如果您需要使用它,您可以从 THIS link 下载其 Ver.11.9。最新是 Ver.12
  • @Koyas 很忙,是的。我今天会试试。或者提出一个关于 dotnetbar combobox.mybe beter.mybe sombody 的新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2022-10-08
相关资源
最近更新 更多