美好的一天到了所有人,我想知道是否有可能
Winform Items
A。)1~5 ComboBox
B。)1~5文本框用于时间(我将它们识别为例如txtTime1~txtTime5)
C。)数量为1~5的文本框(我将它们识别为例如txtAmount1~txtAmount5)
第1~5项(ComboBox 1-5,txtTime 1-5,txtAmount 1-5)将执行相同的功能。
一个。)
if (combobox1.SelectedValue.ToString() == "Regular")
{
x = 1.25;
}
else if (combobox1.SelectedValue.ToString() == "Double")
{
x = 2;
}
// Same Codes for ComboBox 2~5
B.)文本框“txtTime(s)”将保存TextChange事件,获取我们所说的组合框的值
if (txtTime.Text.Lenght > 0)
{
// Item Letter "C"
// value of "x" is equal to the above item
txtAmount.Text = (double.Parse(txtTime.Text) * x).ToString();
}
我只需要快速了解如何完成这项工作
提前感谢
编辑*
我能想到的只是一个快速的代码来逐个调用它们
private Method1()
{ double x,base;
if (combobox1 = "Regular")
{ x = base * 1.25; }
if (combobox2 = "Regular")
{ x = base * 1.25; }
// so on
return x;
}
private txtTime1_TextChange(Event ****)
{
if (txtTime1.Text.Lenght > 0)
{ txtAmount1.Text = (Method1() * double.Parse(txtTime1.Text)).ToString();}
private txtTime2_TextChange(Event ****)
{
if (txtTime2.Text.Lenght > 0)
{ txtAmount2.Text = (Method1() * double.Parse(txtTime2.Text)).ToString();}
// and so on
答案 0 :(得分:0)
您可以将方法作为控件事件处理程序。每个事件处理程序都有一个sender参数,表示事件触发的控件。 您可以拥有这样的事件处理程序:
public ComboBoxEventHandler(object sender,EventArgs args)
{
var comboBox=sender as ComboBox;
if(comboBox==null) return;
if (comboBox.SelectedValue.ToString() == "Regular")
{
x = 1.25;
}
else if (comboBox.SelectedValue.ToString() == "Double")
{
x = 2;
}
}}
你可以为其他控件做同样的事情。
<强>更新强>
为了使维护更容易,您可以拥有一个包含相应控件及其行为的类,然后您可以动态地将控件添加到表单中而无需重复自己,或者您可以非常轻松地向表单添加更多行。比如这样:
public class RowController
{
public ComboBox Rate{get;private set;}
public TextBox Hours{get;private set;}
public TextBox Amount{get;private set;}
public RowController(ComboBox rate,TextBox hours,TextBox amount)
{
Rate=rate;
Hours=hours;
Hours.TextChange+=OnHoursChanged;
Amount=amount;
}
private void OnHoursChanged(object sender,EventArgs args)
{
if (Hours.Text.Length > 0)
{ Amount.Text = (GetRate() * double.Parse(Hours.Text)).ToString();}
}
private double GetRate()
{
if (Rate.SelectedValue.ToString() == "Regular")
{
return 1.25;
}
else if (Rate.SelectedValue.ToString() == "Double")
{
return 2;
}
}
}
然后您可以在表单中定义RowControllers,如下所示:
var row1=new RowController(comboBox1,txtTime1,txtAmount1);
并且每个控制器都会自己完成它的工作。