Определяемая пользователем загрузка TabPage в TabControl - PullRequest
0 голосов
/ 08 декабря 2011

В настоящее время я пишу небольшое приложение на rolodex для себя и столкнулся с небольшой проблемой.

У меня есть пользовательская dll TabPage, которую я написал. Пользователь вводит информацию о человеке в пустой UD-TabPage. Затем я убираю информацию из tabPage и сохраняю ее в Record объекте, который я создал.

У пользователя есть возможность создать многие из этих вкладок. И каждый раз, когда я сохраняю информацию в объекте Record и помещаю этот объект в List<Record>.

Когда пользователь заканчивает ввод контактов и хочет просмотреть все вкладки, я помещаю 26 tabPages в TabControl, A-Z. И они прокрутят до нужной вкладки, чтобы они могли просматривать свои контакты.

Проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, как взять мои данные из List<record> и поместить их обратно в tabControl без необходимости создавать дополнительные вкладки. Например. Если у меня есть человек по имени «Джон Смит» и «Сьюзан Смит», я хочу иметь возможность прокручивать до вкладки «S», и там будет «Джон», а «Сьюзан» будет отображаться, когда я нажимаю «Далее».

Я уже алфавитизировал вкладки, созданные пользователем. Я просто не уверен, как аккуратно их отобразить.

Если у кого-то есть идеи или какой-нибудь псевдокод, это было бы здорово! Спасибо!

1 Ответ

1 голос
/ 08 декабря 2011

Я бы использовал словарь).Например:

        List<record> cUngroupedRecords = new List<record>();

        Dictionary<string, List<record>> cGroupedRecords = new Dictionary<string, List<record>();

        foreach (record Record in cUngroupedRecords)
        {
            string sFirstChar = Record.LastName[0].ToString();
            List<record> cRecords;

            if (cGroupedRecords.ContainsKey(sFirstChar)) {
                cRecords = cGroupedRecords[sFirstChar];
            } else {
                cRecords = new List<string>();
                cGroupedRecords.Add(sFirstChar, cRecords);
            }
            cRecords.Add(Record);
        }

Затем вы можете перебирать каждую группу в cGroupedRecords.

...