Как я могу установить имя секундомера во время выполнения?

Мне нужно решение небольшой проблемы в моем проекте, и я сделаю это максимально простым:

В одной из форм моего проекта пользователь должен иметь возможность добавить панель в форму, и эта форма должна содержать 2 элемента управления... метку и (секундомер или таймер).

Проблема в том, что после динамического создания секундомера я не могу установить имя для секундомера. Позже в этой форме, когда пользователь нажимает на секундомер панели, должен запускаться. Как я могу установить имя для созданного секундомера? или любое другое решение, если мой путь слишком глуп. Вот что у меня есть:

Dim Panels As Integer = ds.Tables("Pool").Rows.Count
        For i = 1 To Panels 
            'set the new panel number
            Dim NextPanelNumber As Integer = FlowLayoutPanel1.Controls.Count + 1
            'controls to be added
            Dim NextPanel As New PanelControl
            Dim NextPanelLabel As New LabelControl
            Dim NextPanelStopwatch As New Stopwatch
            'determine properties for new table
            NextPanel.Width = 200
            NextPanel.Height = 114
            NextPanelStopwatch.Name = "anything" ' <-- PROBLEM IS HERE

            'add controls into new panel
            NextPanel.Controls.Add(NextPanelLabel)

person Boher    schedule 30.01.2013    source источник
comment
Возможно, вам следует создать пользовательский элемент управления, содержащий метку и секундомер. Просто открыть свойства, которые необходимо настроить, и добавить их на панель макета потока?   -  person Origin    schedule 30.01.2013
comment
Да, он уже добавляется в панель управления потоком, но я борюсь с установкой ТОЛЬКО имени секундомера.   -  person Boher    schedule 30.01.2013


Ответы (1)


Вы создали имя для секундомера при его создании, дополнительного свойства имени нет. Просто убедитесь, что экземпляр видим там, где вы хотите начать.

Dim NextPanelStopWatch As New Stopwatch
NextPanelStopWatch.Start()
person Mark Hall    schedule 30.01.2013
comment
Хорошо, скажем, у меня есть 3 секундомера с такими именами: NextPanelStopWatch1, NextPanelStopWatch2, NextPanelStopWatch3... Если я нажму на панель 1, я хочу, чтобы первый секундомер запустился. Как я тогда это назову? - person Boher; 30.01.2013
comment
Я вижу, в чем ваша проблема, то, что вы пытаетесь сделать, громоздко, и вам лучше всего создать пользовательский элемент управления и открыть оттуда нужные вам методы. Что вам нужно, так это уникальная переменная области класса для каждого секундомера, которой у вас нет, поскольку вы создаете ее в цикле. Вы можете попробовать создать список с областью действия класса (секундомера) и добавить в него свои секундомеры, после чего вы сможете вызывать их по экземпляру. то есть StopWatchList(1).Start. У вас будет такая же проблема и с другими предметами. - person Mark Hall; 30.01.2013