Управление метками в .net - PullRequest
5 голосов
/ 18 января 2012

Я использую VB 2008 express, но это, вероятно, относится ко всем средам .net.

Мой вопрос касается ярлыков, которые ничего не делают. Нет событий, и их текст никогда не меняется. Они просто сидят над текстовыми полями и другими штуковинами, чтобы пользователь знал, для чего нужен каждый ключ. Вот и вся их работа. Просто. Нет кода вообще. (Кроме кода, написанного дизайнером форм.)

Моя проблема в том, что их так много! Мое приложение имеет несколько вкладок в одной и той же форме, и каждая вкладка имеет много объектов, и каждая имеет связанную метку. Так как я никогда не удосужился назвать их, у меня теперь есть этикетка с именем Label224. Это верно, 224 этикетки! Это становится смешным. Когда я просматриваю окно свойств, иногда я хочу выбрать объект по имени, используя выпадающий список, и они вызывают много прокрутки.

ВОПРОС: Есть ли способ сделать количество неназванных меток (или любой тип объекта, на который нет ссылок в коде) менее навязчивым во время разработки?

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

Ответы [ 2 ]

4 голосов
/ 18 января 2012

Пара вещей.

Установите для свойства каждого ярлыка GenerateMember значение false:

label1.GenerateMember = False

Это предотвратит появление метки в полях со списком представлений кода и intellisense.

Кроме этого, у вас просто слишком много элементов управления.

Вы упомянули «вкладки», и в этом случае вы можете попытаться переместить каждую вкладку материала в отдельный пользовательский контроль, а затем вы загружаете только один пользовательский контроль для каждой вкладки. Это не уменьшает количество элементов управления, но делает его немного более управляемым.

Другое «задание» метки состоит в том, чтобы обеспечить активацию мнемонического элемента управления для следующего элемента управления в порядке табуляции. Если вы не используете это, вы можете попробовать «обмануть» и избавиться от меток вместе, и «нарисовать» метку рядом с каждым элементом управления в событии рисования контейнера. Вы можете поместить отображение метки в свойство тега элемента управления и нарисовать его. Не обязательно самое лучшее предложение.

Пример:

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
  For Each c As Control In Me.Controls
    If c.Tag IsNot Nothing Then
      TextRenderer.DrawText(e.Graphics, c.Tag.ToString, Me.Font, _
                            New Rectangle(c.Left - 100, c.Top, 100, c.Height), _
                            Color.Black, Color.Empty, TextFormatFlags.VerticalCenter)
    End If
  Next
End Sub
3 голосов
/ 18 января 2012

Если у вас много элементов управления TextBox со смежными метками, вы можете создать пользовательский элемент управления, который состоит из TextBox и метки. Вы можете добавить любые свойства, которые вам нравятся для настройки внешнего вида.

enter image description here

Это такой общий шаблон пользовательского интерфейса, я действительно думаю, что VS должен иметь такой элемент управления.

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

Вот еще один пример пользовательского контроля, который у меня есть - это всего лишь две метки, но принцип тот же:

enter image description here

Здесь он используется несколько раз в одной форме:

enter image description here

Вместо 18 ярлыков в форме у меня есть 9 экземпляров моего пользовательского контроля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...