VB.net通过检查数字是否大于来比较多个文本框
我有18个文本框,其中只包含一个数字。9个文本框称为VB.net通过检查数字是否大于来比较多个文本框,vb.net,Vb.net,我有18个文本框,其中只包含一个数字。9个文本框称为tbmax(tbmax1-9),9个文本框称为tbnumber(tbnumber1-9)。像这样:tbnumber1,tbnumber2,tbnumber3。。。等等。以及tbmax1,tbmax2,tbmax3等等 这就是我想要的… 如果tbnumber(1-9).text中的任何数字大于tbmax(1-9).text中的任何数字,请执行操作。换句话说,如果只有一个tbnumber文本框的数字大于只有一个tbmaxtexbox的数字,请采取措
tbmax
(tbmax1-9),9个文本框称为tbnumber
(tbnumber1-9)。像这样:tbnumber1
,tbnumber2
,tbnumber3
。。。等等。以及tbmax1
,tbmax2
,tbmax3
等等
这就是我想要的…
如果tbnumber(1-9).text中的任何数字大于tbmax(1-9).text中的任何数字,请执行操作。换句话说,如果只有一个tbnumber
文本框的数字大于只有一个tbmax
texbox的数字,请采取措施
尝试1
For Count = 1 To 9
Dim Tnumber = CType(Controls.Find("tbnumber" & Count, True).FirstOrDefault(), TextBox)
Dim Tmax = CType(Controls.Find("tbmax" & Count, True).FirstOrDefault(), TextBox)
If Tnumber.Text > Tmax.text Then
'do something
next
end if
尝试2
Dim tbnumber_textboxes As New List(Of TextBox) From {tbNumber1,
tbNumber2, tbNumber3, tbNumber4, tbNumber5, tbNumber6, tbNumber7,
tbNumber8, tbNumber9}
Dim tbmax_textboxes As New List(Of TextBox) From {tbmax1, tbmax2,
tbmax3, tbmax4, tbmax5, tbmax6, tbmax7, tbmax8, tbmax9}
If tbNumber_textboxes.Any(Function(cb) cb.Text) > tbMax_textboxes.Any(Function(cb) cb.Text) Then
'Do something
'For example msgbox("A number is larger than any of the max-textboxes")
然而,它似乎不起作用,我也不太清楚为什么。在我的第二次尝试中,我认为“Any”不是适合我的用法
更新Thorsten的答案
我已经测试了您的方法,我删除了MaxVal,通过在其中添加一个数字来简化测试
这就是我得到的
For Count = 1 To 9
Dim Tnumber = CType(Controls.Find("tbnumber" & Count, True).FirstOrDefault(), TextBox)
Dim number = Convert.ToInt32(Tnumber.Text)
If (number > 0) And (number < 30) Then
tbTest1.Text = "0-30"
tbtest2.Text = number
elseif (number > 30) And (number < 50) Then
tbTest1.Text = "30-50"
tbtest2.Text = number
end if
next
计数=1到9的
Dim Tnumber=CType(Controls.Find(“tbnumber”)和Count,True.FirstOrDefault(),TextBox)
Dim number=Convert.ToInt32(Tnumber.Text)
如果(数字>0)和(数字<30),则
tbTest1.Text=“0-30”
tbtest2.Text=编号
elseif(数量>30)和(数量<50)然后
tbTest1.Text=“30-50”
tbtest2.Text=编号
如果结束
下一个
当我在tbtest2中得到1
时,tbnumber文本框(1-9)就是这样的
所以我注意到,出于某种原因,tbtest2.text
输出1
<代码>编号
应该是tbnumber1-9文本框中的最大编号。尝试1在我看来很有希望(我也会尝试同样的方法)。但是,您最终没有比较正确的值
If Tnumber.Text > Tmax Then
'do something
上面的比较将Tnumber
文本框的文本与实例Tmax
-将字符串
与文本框
进行比较
您需要从两个文本框中获取文本,将它们转换为Int32
,然后比较这两个值。我不是VB.NET开发人员,但我希望这一打击能奏效:
Dim number = Convert.ToInt32(Tnumber.Text)
Dim maxVal = Convert.ToInt32(Tmax.Text)
If number > maxVal Then
'do something
end if
此外,您需要记住以下几点:如果文本框是面板、分组框或其他容器的一部分,则它们将是相应容器的控件
集合的一部分,而不是表单的控件
集合的一部分,因此,请使用调试器来确定您是否真正找到了控件
请注意,按名称查找控件区分大小写。!因此,如果控件名为tbNumber9
,并且您正在搜索tbNumber9
,则不会得到结果
编辑:要显示要执行此操作的最大数量,请执行以下操作:
Dim maxNumber = Int32.MinValue
For Count = 1 To 9
Dim Tnumber = CType(Controls.Find("tbnumber" & Count, True).FirstOrDefault(), TextBox)
Dim number = Convert.ToInt32(Tnumber.Text)
If (number > maxNumber) Then
maxNumber = number
tbtest2.Text = maxNumber
If (maxNumber > 0) And (maxNumber < 30) Then
tbTest1.Text = "0-30"
elseif (maxNumber > 30) And (maxNumber < 50) Then
tbTest1.Text = "30-50"
end if
End If
next
Dim maxNumber=Int32.MinValue
对于计数=1到9
Dim Tnumber=CType(Controls.Find(“tbnumber”)和Count,True.FirstOrDefault(),TextBox)
Dim number=Convert.ToInt32(Tnumber.Text)
如果(数字>最大数字),则
maxNumber=数字
tbtest2.Text=maxNumber
如果(maxNumber>0)和(maxNumber<30),则
tbTest1.Text=“0-30”
elseif(maxNumber>30)和(maxNumber<50),然后
tbTest1.Text=“30-50”
如果结束
如果结束
下一个
这将在maxNumber
中存储当前遇到的最大值,如果该值发生更改,则会更新其他文本框。尝试1对我来说很有希望(我也会尝试同样的方法)。但是,您最终没有比较正确的值
If Tnumber.Text > Tmax Then
'do something
上面的比较将Tnumber
文本框的文本与实例Tmax
-将字符串
与文本框
进行比较
您需要从两个文本框中获取文本,将它们转换为Int32
,然后比较这两个值。我不是VB.NET开发人员,但我希望这一打击能奏效:
Dim number = Convert.ToInt32(Tnumber.Text)
Dim maxVal = Convert.ToInt32(Tmax.Text)
If number > maxVal Then
'do something
end if
此外,您需要记住以下几点:如果文本框是面板、分组框或其他容器的一部分,则它们将是相应容器的控件
集合的一部分,而不是表单的控件
集合的一部分,因此,请使用调试器来确定您是否真正找到了控件
请注意,按名称查找控件区分大小写。!因此,如果控件名为tbNumber9
,并且您正在搜索tbNumber9
,则不会得到结果
编辑:要显示要执行此操作的最大数量,请执行以下操作:
Dim maxNumber = Int32.MinValue
For Count = 1 To 9
Dim Tnumber = CType(Controls.Find("tbnumber" & Count, True).FirstOrDefault(), TextBox)
Dim number = Convert.ToInt32(Tnumber.Text)
If (number > maxNumber) Then
maxNumber = number
tbtest2.Text = maxNumber
If (maxNumber > 0) And (maxNumber < 30) Then
tbTest1.Text = "0-30"
elseif (maxNumber > 30) And (maxNumber < 50) Then
tbTest1.Text = "30-50"
end if
End If
next
Dim maxNumber=Int32.MinValue
对于计数=1到9
Dim Tnumber=CType(Controls.Find(“tbnumber”)和Count,True.FirstOrDefault(),TextBox)
Dim number=Convert.ToInt32(Tnumber.Text)
如果(数字>最大数字),则
maxNumber=数字
tbtest2.Text=maxNumber
如果(maxNumber>0)和(maxNumber<30),则
tbTest1.Text=“0-30”
elseif(maxNumber>30)和(maxNumber<50),然后
tbTest1.Text=“30-50”
如果结束
如果结束
下一个
这将存储在maxNumber
中遇到的当前最大值,如果该值更改,则更新其他文本框。您的代码仅比较具有相同索引的数字(因此值1与值1比较,值5与值5比较)。
就我个人而言,我会做以下工作,这也让它更具可读性(imo)
您的代码只比较具有相同索引的数字(因此值1与值1比较,值5与值5比较)。
就我个人而言,我会做以下工作,这也让它更具可读性(imo)
谢谢你的回答,托尔斯滕。我马上就来试试。很抱歉回复晚了。我不知道为什么,但它似乎不起作用。我一直在