如何根据表单上每个控件中输入的数据设置进度条值增加/减少?我的意思是,我正在使用多个控件,所以请选择一个示例[假设我有四个文本框,进度条最大值为100,当输入txt_1时,进度值必须增加到100/4 = 25,如果我从txt_1中删除数据,则值应减少为零。
对不起我的语言,我的英语不好。
任何人都可以帮助我,请.....谢谢。
答案 0 :(得分:1)
您所做的第一件事就是将formload事件中的进度条设置为您正在使用的文本框数量。
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(发件人为对象,e为EventArgs)"
2. TextBox TextChanged事件" Private Sub TextBox_TextChanged(sender as Object,e As EventArgs)"
然后将您要使用的所有文本框链接到事件
在这些活动中,您将使用发件人 制作一个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"布尔"到真
" ProgressValue = ProgressValue - 1"
" CheckTextBox = True"
2.然后使用ElseIf检查CheckTextBox"布尔"是真的。
如果为true,则向进度条添加1并将布尔值设置为false
" ProgressValue = ProgressValue + 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