pravin9455 Ответов: 1

Как я могу получить правильное расположение текстового поля при помещении в групповом блоке VB.NET В , С#


Привет,
Как получить правильное положение текстового поля при размещении в групповом поле?

Мне нужно получить левое и нижнее значение текстового поля, чтобы расположить datagrid ниже текстового поля.

С помощью приведенного ниже кода я получаю правильную позицию, когда текстовое поле не помещается в Groupbox (tшляпа-это текстовое поле, которое помещается на форму, а не внутри какого-либо контейнера.)Но когда я помещаю текстовое поле в Groupbox, я не получаю правильного левого и нижнего текстового поля .

Как мне получить правильную позицию когда текстовое поле помещается в контейнер Groupbox.


Private Sub TbxSupCode_Enter(sender As Object, e As EventArgs) Handles TbxSupCode.Enter

        Dim TbxRectangle As Rectangle = TbxSupCode.DisplayRectangle()
        TbxRectangle.X += TbxSupCode.Left
        TbxRectangle.Y += TbxSupCode.Top + TbxSupCode.Height

        DgvSupCodeList.Location = New Point(TbxRectangle.X, TbxRectangle.Y)


    End Sub


Что я уже пробовал:

Private Sub TbxSupCode_Enter(sender As Object, e As EventArgs) Handles TbxSupCode.Enter

        Dim TbxRectangle As Rectangle = TbxSupCode.DisplayRectangle()
        TbxRectangle.X += TbxSupCode.Left
        TbxRectangle.Y += TbxSupCode.Top + TbxSupCode.Height

        DgvSupCodeList.Location = New Point(TbxRectangle.X, TbxRectangle.Y)


    End Sub

1 Ответов

Рейтинг:
9

Ralf Meier

Какое "правильное" место вы хотите иметь ?
Если ваше текстовое поле является членом группового поля, то ваше значение Location-value соответствует этому групповому полю.
Я полагаю, вы хотите иметь расположение экрана Вашего текстового поля. В этом случае вы должны спросить родителя вашего текстового поля (в вашем случае Groupbox) о его местоположении и добавить его x - и y-значения к значениям вашего текстового поля.
Но (если этот вопрос разрешен) - для чего вам это нужно? ..


pravin9455

Я хочу поместить datagridview точно под текстовым полем (слева от datagrid должно быть слева от текстового поля, а вверху datagrid должно быть внизу текстового поля.
В моем приведенном выше коде, когда texbox находится в groupbox, я не получаю правильное размещение. это сбивается с пути (Groupbox2)


Private Sub TbxSupCode_Enter(sender As Object, e As EventArgs) обрабатывает TbxSupCode.Входить

Dim TbxRectangle As Rectangle = TbxSupCode.DisplayRectangle()
TbxRectangle.X += TbxSupCode.Left
TbxRectangle.Y += TbxSupCode.Top + TbxSupCode.Высота

DgvSupCodeList.Location = Новая Точка(TbxRectangle.Х, TbxRectangle.Г)


Конец Подводной Лодки

Ralf Meier

Так что есть несколько новых вопросов :
- в чем смысл группового ящика ? Почему у вас нет текстового поля непосредственно на форме ?
- Групповое поле непосредственно заканчивается за текстовым полем ?
- или ... вы хотите поместить DataGridView поверх GroupBox (когда он находится под текстовым полем) ?
- или ... если DGV также стать членом группы ?

pravin9455

"это сбивается с пути (Groupbox2)"

Извините : groupbox doe не сбивается с пути, его datagridview находится над текстовым полем

я хочу поместить DataGridView поверх GroupBox (когда под текстовым полем) ?

datagridview становится видимым при вводе taxtbox и невидимым при выходе из текстового поля.

Ralf Meier

Я не могу следовать за вами (в данный момент) ...
Пожалуйста, объясните : что должно произойти с каким действием ?
И : почему у вас есть текстовое поле внутри группового поля ?

pravin9455

у меня есть текстовое поле (TbxSupCode) для ввода кода поставщика и Datagridview (DgvSupCodeList) для отображения списка кода поставщика для выбора. Изначально datagridview остается невидимым. при вводе в текстовое поле я располагаю эту сетку данных ниже текстового поля, начиная слева от текстового поля и сверху от нижней части текстового поля, и делаю ее видимой (она будет невидима при выходе из текстового поля) .Для этого мне нужно получить левую и нижнюю часть текстового поля для размещения местоположения datagrid.

Наряду с другими элементами управления я поместил это текстовое поле в Group box (GroupBox2) .У меня есть ниже код, чтобы получить точку местоположения для datagrid.


Private Sub TbxSupCode_Enter(sender As Object, e As EventArgs) обрабатывает TbxSupCode.Входить

Dim TbxRectangle As Rectangle = TbxSupCode.DisplayRectangle()
TbxRectangle.X += TbxSupCode.Left
TbxRectangle.Y += TbxSupCode.Top + TbxSupCode.Высота

DgvSupCodeList.Location = Новая Точка(TbxRectangle.Х, TbxRectangle.Г)


Конец Подводной Лодки

Проблема в том, что если я помещаю это текстовое поле на форму без какого-либо контейнера, я отлично получаю положение datagrid. но если я помещаю это текстовое поле внутри контейнера ( например, groupbox), оно появляется над текстовым полем . мне нужно получить эту сетку данных ниже текстового поля, когда она находится в контейнере.

Мне нужно поместить в групповое поле для лучшего отображения, так как в форме есть много элементов управления. я предоставлю более подробную информацию, если потребуется.

Ralf Meier

Привет,
описанное поведение является тихим нормальным, потому что Groupbox не является полупрозрачным. Элемент управления, который имеет фокус, переместится на передний план - либо Groupbox (с текстовым полем внутри), либо DGV. Так вот : пусть DGV также быть членом вашей группы ... ОПЕРАЦИОННАЯ... пусть текстовое поле является членом формы (к которой, как это происходит, принадлежит DGV).

pravin9455

Привет спасибо за ответ. Хранение datagrid в одном и том же групповом поле во время разработки обеспечивает идеальное позиционирование .