OriginalGriff
Начните с упрощения вещей и попытайтесь увидеть, что именно происходит:
Private Sub SelectedLabel_MouseDoubleClick(sender As Object, e As MouseEventArgs)
SelectedLabel = DirectCast(sender, Label)
MainContainer.Controls.Remove(SelectedLabel)
SelectedPanel.Controls.Add(SelectedLabel)
End Sub
Теперь, когда вы дважды щелкнете по метке, она будет удалена с главной панели и перемещена на другую.
Быстрый тест должен доказать, что это работает.
Если это так, то проблема заключается в остальной части вашего кода, и почти наверняка местоположение не видно, или размер означает, что вы не можете видеть метку. Без вашего другого кода мы не можем сказать-так что верните бит размера обратно:
Private Sub SelectedLabel_MouseDoubleClick(sender As Object, e As MouseEventArgs)
SelectedLabel = DirectCast(sender, Label)
MainContainer.Controls.Remove(SelectedLabel)
SelectedLabel.Size = New Size(30, 30)
SelectedPanel.Controls.Add(SelectedLabel)
End Sub
И посмотрим, что будет дальше. Продолжайте делать это, и станет ясно, в чем проблема.
Привет OriginalGriff,
Спасибо за быстрый ответ. Но это работает не так, как я себе представляю. Я признаю, что мне нужно изменить размер шрифта, чтобы уменьшить метку, чтобы пользователь мог прочитать текст метки. Теперь, согласно вашему предложению, мы не говорим этой программе поместить этикетку в определенное место. Таким образом, некоторые метки отображаются внутри панели. Но некоторые-нет. И самое странное, что метки появляются на панели точно так же, как они появляются в MainContainer. На одинаковом расстоянии друг от друга и в том же порядке.
В этом-то все и дело. Поскольку вы перемещаете только метки, расположение и размер не меняются , но это доказывает, что остальная часть кода работает. Поэтому, как я и предложил, попробуйте добавить обратно часть кода - возможно, измените размер - и посмотрите, что произойдет. Таким образом, вы сужаетесь в том, какая часть вашего исходного кода вызывает проблему. Затем вы можете исправить это, а затем попробовать остальную часть кода.
Привет,
Поскольку я сам учусь, я еще никогда не использовал точку останова. Потому что я не видел никакого учебника о том, как его использовать. Вместо этого я использую отладку.Команда WriteLine, чтобы увидеть, что там происходит. В этом контексте я собираюсь сделать то же самое в контрольном событии панели. Если я делаю что-то не так или есть какой-то шанс улучшить свой метод отладки, пожалуйста, поправьте меня.
Это одна из причин, почему быть "самообучающимся" - очень плохая идея - вы никогда не знаете, чего вам не хватает, потому что вы даже не знаете, что это существует! Возьмите книгу - или лучше пройдите курс-и проследите его до конца. Он должен представлять все в хорошо структурированном виде, чтобы вы не пропустили важные вещи.
Отладчик похож на использование Debug.WriteLine-только лучше, и без необходимости добавлять какие-либо утверждения. Начните с вашего метода, отображаемого в Visual Studio, и поместите курсор на первую строку. Перейдите в меню и выберите пункт "Отладка...Переключить точку останова "- в левой части линии появится красная точка - это" индикатор точки останова", и если вы нажмете на нее, она исчезнет. Нажмите еще раз, и он вернется. Теперь вы знаете, куда идет точка, это самый быстрый способ переключить точку останова: нажмите на этот столбец, и эта строка получит точку останова.
Теперь запустите код в отладчике-обычно это просто нажатие клавиши F5, но меню скажет вам: "отладка...Start Debugging " сделает это и сообщит вам, какой ключ ему назначен.
Когда ваше приложение достигнет точки останова, оно остановится и передаст управление вам. Вы можете просмотреть содержимое переменных, наведя на них курсор мыши, или использовать панели "Auto", "Locals" и "Watch" области вывода на экране VS. И вы можете один шаг Вы код-это означает, что вы можете выполнить его строка за строкой, чтобы увидеть точно, что происходит и почему он делает то, что он сделал. Не только это, но вы можете изменить код во время работы вашего приложения, чтобы увидеть, устраняет ли это проблему!
Он мощный, очень мощный - но это основа, и его должно хватить на очень долгое время (я вообще почти не использую более продвинутые функции!)
Попробуйте-и вы скоро удивитесь, что, черт возьми, вы делали без него! :смеяться: