首页 > 解决方案 > 变量取决于选项卡焦点

问题描述

我有一个问题困扰了我很长一段时间,但我无法解决这个问题。

所以我有一个包含 8 个选项卡的程序,当我单击此页面上的按钮时,所有选项卡都使用相同的公式进行计算,但基本值取决于选择了哪个选项卡以及单击了哪个按钮

变量 a1 和 a2 是访问完全相同的数据库的相同值,就像 b1&b2 和 c1&c2 用作组合框一样

Private Sub Calculate() Handles button1.Click
value1 = 0.5 
sum1 = a1.selectedValue*b1.SelectedValue*c1.SelectedValue*value1
textbox1.value = sum1.value

Private Sub Calculate2() Handles button2.Click
value2 = 0.55
sum2 = a1.selectedValue*b2.selectedValue*c2.selectedValue*value2
texbox2.value = sum2.value

有什么方法可以通过依赖于重点的选项卡来创造价值并简化它?喜欢

Private Sub Calculate(sender As Object, e As EventArgs) Handles button1.Click, button2.Click, button3.Click

if tabpage1 is focus then
value = 0.05
elseif tabpage2 is focus then
value = 0.55
end if

if a1 is selected then
a=a1.value
elseif a2.is selected then
a=a2.value
......
endif
.......
sum = a*b*c*value

if tabpage1 is focus then
textbox1.value = sum.value
else
....
endif

?? 我知道上面的代码远非“简单”,实际上每个子中的处理按钮可能是嗯......更好?只需查看其他观点即可在一个子项中执行此 8 个选项卡

标签: vb.netformswinforms

解决方案


我建议最好的解决方案是这样的:

Dim selectedTab = TabControl1.SelectedTab
Dim tb = selectedTab.Controls.OfType(Of TextBox)().First()
Dim value = CInt(selectedTab.Tag)

'Use tb and value here.

您只需将Tag每个属性设置TabPage为适当的值,如果每个页面上还有其他行TextBoxes或它位于另一个容器内,则可能需要调整第二行。每个页面上显然有多个ComboBoxes,因此该部分可能如下所示:

Dim cbs = selectedTab.Controls.OfType(Of ComboBox)().ToArray()
Dim cbb = cbs(0)
Dim cbc = cbs(1)

推荐阅读