如何基于C#代码后面的值设置可见的true / false

时间:2019-03-20 18:35:53

标签: c# asp.net webforms code-behind

我有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
};

2 个答案:

答案 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 = falseattribute_type == 'S'时,您可以执行以下操作:

attribute_type == 'D'

它可以在代码中节省一些空间,并使其更具可读性。