我有Date selector, Select box, textbox, checkbox
之类的输入控件列表。我想根据用户选择的类型设置可见的是非。
我尝试了下面的方法,但是只是想知道我是否可以使它干燥并从单个函数或其他东西进行有效的调用。任何建议将不胜感激。
请忽略文本框的名称或其他名称,因为这仅是示例。
if (attribute_type == "T") {
Value1_tbx.Visible = true; // this is true
Value1_tbx.Text = some_text_value; // and set some value
Value_ddl.Visible = false;
Value_Date_tbx.Visible = false;
Value_Date_calendar_img.Visible = false;
Value_rbl.Visible = false;
} else if (attribute_type == "S") {
Value1_tbx.Visible = false;
Value_ddl.Visible = true; // this is true
Value_ddl.Text = some_select_box_value; // and set some value
Value_Date_tbx.Visible = false;
Value_Date_calendar_img.Visible = false;
Value_rbl.Visible = false;
} else if (attribute_type == 'D') {
Value1_tbx.Visible = false;
Value_ddl.Visible = false;
Value_Date_tbx.Visible = true; // this is true
Value_Date_calendar_img.Visible = true; // calendar icon should be visible
Value_Date_tbx.Text = some_date_value; // and set some value
Value_rbl.Visible = false;
} else if (attribute_type == 'R') {
Value1_tbx.Visible = false;
Value_ddl.Visible = false;
Value_Date_tbx.Visible = false;
Value_Date_calendar_img.Visible = false;
Value_rbl.Visible = true; // this is true
Value.rbl.Text = some_value; // and set some value
};
答案 0 :(得分:1)
在我的其他答案的评论中,我说过,如果要编写一个函数,则需要仍然执行检查。但是,您可以编写多个单独的函数来设置控件的值。这样做可以减轻执行检查的负担,但是将需要更多代码。
创建函数:
public void SetTControls()
{
Value1_tbx.Visible = true;
Value1_tbx.Text = some_text_value;
Value_ddl.Visible = false;
Value_Date_tbx.Visible = false;
Value_Date_calendar_img.Visible = false;
Value_rbl.Visible = false;
}
public void SetSControls()
{
Value1_tbx.Visible = false;
Value_ddl.Visible = true;
Value_ddl.Text = some_select_box_value;
Value_Date_tbx.Visible = false;
Value_Date_calendar_img.Visible = false;
Value_rbl.Visible = false;
}
public void SetDControls()
{
Value1_tbx.Visible = false;
Value_ddl.Visible = false;
Value_Date_tbx.Visible = true;
Value_Date_calendar_img.Visible = true;
Value_Date_tbx.Text = some_date_value;
Value_rbl.Visible = false;
}
public void SetRControls()
{
Value1_tbx.Visible = false;
Value_ddl.Visible = false;
Value_Date_tbx.Visible = false;
Value_Date_calendar_img.Visible = false;
Value_rbl.Visible = true;
Value.rbl.Text = some_value;
}
然后您可以像这样清理if / else语句:
if (attribute_type == 'T')
SetTControls();
else if (attribute_type == 'S')
SetSControls();
else if (attribute_type == 'D')
SetDControls();
else if (attribute_type == 'R')
SetRControls();
正如我所说,它需要更多代码,但肯定可以清除if / else语句。希望这会有所帮助!
答案 1 :(得分:0)
如果基于attribute_type
的值,要设置的某些控件值相同,则可以使用switch语句。
例如,如果Value_ddl.Visible = false
或attribute_type == 'S'
时,您可以执行以下操作:
attribute_type == 'D'
它可以在代码中节省一些空间,并使其更具可读性。