#c#
#c#
Вопрос:
У меня есть 4 текстовых поля, я пишу 4 функции, в каждой функции я хочу, чтобы одно текстовое поле было видимым true, другие false.
function1()
{
Txtbox1.visible=true;
Txtbox2.visble=false;
Txtbox3.visible=false;
TxtBox4.visible=false;
}
аналогичным образом я пишу еще 3 функции, чтобы сделать видимость других текстовых полей равной true.Как выполнить оптимизацию кода c #,Asp.net
Ответ №1:
Настройте TextBox
массив. Например
TextBox[] textboxes = { TxtBox1, TxtBox2, TxtBox3, TxtBox4 };
Затем вы можете написать функцию для настройки видимости по индексу.
void SetVisibility(int index)
{
// do index validation
textboxes[index].Visible = true;
for (int i = 0; i < textboxes.Length; i )
{
if (i != index) textboxes[i].Visible = false;
}
}
Итак, теперь вместо вызова function1(), function()2, // etc.
вы должны вызвать SetVisibility(0), SetVisibility(1)
.
Ответ №2:
Напишите одну функцию, которая устанавливает для всех 4 видимых элементов управления значение false, затем устанавливает желаемый элемент управления (передаваемый в качестве параметра) в значение true:
private void ShowTextBox(TextBox target)
{
Txtbox1.Visible = false;
Txtbox2.Visible = false;
Txtbox3.Visible = false;
Txtbox4.Visible = false;
target.Visible = true;
}
Затем вызовите функцию, передающую экземпляр textbox, который вы хотите сделать видимым:
ShowTextBox(Txtbox1);
Ответ №3:
Подобно другим, вы также можете использовать LINQ, чтобы сделать это несколькими различными способами.
TextBox[] allTextBoxes = { TxtBox1, TxtBox2, TxtBox3, TxtBox4 };
void SetVisibility(TextBox visibleTextBox)
{
allTextBoxes.Except(new TextBox[] { visibleTextBox })
.ToList()
.ForEach(t => t.Visible = false);
visibleTextBox.Visible = true;
}
Использование:
SetVisibility(Txtbox1);
Вы также могли бы сделать это так, чтобы вы могли установить несколько (или ни одного, чтобы все были скрыты) видимых одновременно (есть еще больше способов сделать это):
void SetVisibility1(params TextBox[] visibleTextBoxes)
{
var visibleList = visibleTextBoxes.ToList();
foreach (TextBox t in allTextBoxes)
{
t.Visible = visibleList.Contains(t);
}
}
void SetVisibility2(params TextBox[] visibleTextBoxes)
{
allTextBoxes.Except(visibleTextBoxes).ToList().ForEach(t => t.Visible = false);
visibleTextBoxes.ToList().ForEach(t => t.Visible = true);
}
void SetVisibility3(params TextBox[] visibleTextBoxes)
{
var visibleList = visibleTextBoxes.ToList();
allTextBoxes.ToList().ForEach(t => t.Visible = visibleList.Contains(t));
}