powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как заставить listbox перерисовать список?
2 сообщений из 2, страница 1 из 1
Как заставить listbox перерисовать список?
    #39972439
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
public partial class ColumnsControl : UserControl
{

        private class ListItem
        {
            private readonly Func<HeaderTypes> _headerTypeGetter;

            public ListItem(Func<HeaderTypes> headerTypeGetter)
                => _headerTypeGetter = headerTypeGetter;

            public string Code { get; set; }
            public string RusName { get; set; }
            public string EngName { get; set; }

            public override string ToString()
            {
                //с помощью делегата определяем, какое поле нужно выводить в листбоксе
                switch (_headerTypeGetter?.Invoke() ?? HeaderTypes.Code)
                {
                    case HeaderTypes.RusName: return RusName;
                    case HeaderTypes.EngName: return EngName;
                    default: return Code;
                }
            }
        }

        private IHeaderType _headerType;
        private IEnumerable<ListItem> _allFields;

        public ColumnsControl()
        {
            InitializeComponent();
            cbColStyle.FillCombo<HeaderTypes>();
            cbColStyle.SelectedIndex = 0;
            cbColStyle.SelectedIndexChanged += (s, a) =>
            {
                if (_headerType == null)
                    return;

                _headerType.HeaderType = (HeaderTypes)cbColStyle.SelectedIndex;

                listAvailable.Update(); //не перерисовывает
                listAvailable.Refresh(); //не перерисовывает
            };            
        }

        public void SetAllFields(IEnumerable<BaseColumns> fields)
        {
            _allFields = fields.Select(f => new ListItem(() => _headerType?.HeaderType ?? HeaderTypes.Code)
            {
                Code = f.Code,
                RusName = f.NameRus,
                EngName = f.NameEng
            });
            listAvailable.Items.AddRange(_allFields.ToArray());
        }
}

Не хочется чистить и заново заполнять листбокс.
...
Рейтинг: 0 / 0
Как заставить listbox перерисовать список?
    #39972462
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос закрыт, сделал через BindingList
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как заставить listbox перерисовать список?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]