Есть форма с текстбоксами nomer1
, nomer2
и т.д.
При загрузке формы считывается файл в котором прописано виден бокс или нет.
using (StreamReader reader = new StreamReader(@"C:\test\viseble.txt"))
{
if (reader.ReadLine() == "1 true")
{
nomer1.Visibility = Visibility.Visible;
}
else
{
nomer1.Visibility = Visibility.Hidden;
}
if (reader.ReadLine() == "2 true")
{
nomer2.Visibility = Visibility.Visible;
}
else
{
nomer2.Visibility = Visibility.Hidden;
}
}
Текстбоксов много и получается очень большой кусок повторяющегося кода. Подскажите пожалуйста как это можно упростить?
Такие настройки предпочтительно хранить так:
Правый клик на названии проекта -> Properties -> Settings
Создаем нужные свойства. Scope User - настройки, которые можно изменять, Scope Application - настройки только для чтения.
//чтение настройки
this.textBox.Visibility = Properties.Settings.Default.ForTextBox1
? Visibility.Visible : Visibility.Hidden;
//запись настройки
Properties.Settings.Default.ForTextBox1 = false;
Properties.Settings.Default.Save();
Даже не меняя подхода к хранению настроек, как предложено в ответе @Bulson, код можно упростить.
using (StreamReader reader = new StreamReader(@"C:\test\viseble.txt"))
{
TextBox tbs = { nomer1, nomer2 };
foreach (var tb in tbs)
{
bool vis = reader.ReadLine() == "true";
tb.Visibility = vis ? Visibility.Visible : Visibility.Hidden;
}
}
Здесь я убрал необходимость иметь номер (1
или 2
) в файле настроек, т.к. они всё равно по Вашей логике расположены последовательно, т.е. первая строка - это видимость первого бокса, вторая - второго бокса.
Спасибо всем, было найдено такое решение:
using (StreamReader reader = new StreamReader(@"C:\visible.txt"))
{
for (int i = 1; i < 10; i++)
{
var box = (TextBox)FindName("textBox" + i);
if (reader.ReadLine() == "true") { box.Visibility = Visibility.Visible; }
else { box.Visibility = Visibility.Hidden; }
}
}
Считывается любое количество строк для любого количества элементов, взависимости от i.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, пишу приложение на WPFПытаюсь добавлять в DataGrid записи, но они дублируют столбцы и сама таблица после их добавления не обновляется,...
У меня есть приложение на wpf, которое достаточно долго пингует ряд ip-шниковЗахотелось установить ProgressBar