Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Не получаю нужную ссылку


Автор: ДобренькийПапаша 31.5.2010, 14:56
Есть TabControl в нём вот так создаю вкладки и на каждую вкладку добавляю элемент MsChart.
Код

private void InitCharts()
        {
            byte currentTabPageIndex = 0;
            foreach (var currentInstrument in properties.InstrumentPeriod)
            {
                tabChart.TabPages.Add(currentInstrument.Key);
                tabChart.TabPages[currentTabPageIndex].Name = currentInstrument.Key;

                Chart chart = CreateChart(currentInstrument.Key, currentInstrument.Value);
                tabChart.TabPages[currentTabPageIndex].Controls.Add(chart);

                currentTabPageIndex++;
            }
        }


Потом мне нужно при изменении индекса выбранной вкладки получить ссылку на текущий элемент MsChart. Я это сделал вот так, но ссылка остаётся на объект MsChart, который был создан первым.
Код

private void tabChart_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.currentChart = GetChart(tabChart.SelectedTab.TabIndex);
        }

        private Chart GetChart(int index)
        {
            foreach (Control ctrl in tabChart.TabPages[index].Controls)
            {
                if (ctrl.GetType() == typeof(Chart))
                    return (Chart)ctrl;
            }
            return null;
        }


Что делать?

Автор: AntonX 4.6.2010, 21:29
гораздо удобнее использовать Свойство Tag, которое есть почти у всех контролов и у TabPage тоже.

при создании новой страницы и размещении на ней объекта записывать этот объект в Tag.

tabPage.Tag = Chart;

таким образом, Можно через (tabControl1.SelectedTab.Tag as Chart) получить доступ к Chart, который на ней размещен. и никакого шаманства с индексами.


Автор: diadiavova 4.6.2010, 22:40
Цитата(ДобренькийПапаша @  31.5.2010,  15:56 Найти цитируемый пост)
Что делать? 

Создать собственную вкладку, у которой будет свойство, возвращающее нужный тебе контрол,, и добавлять её уже готовенькую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)