powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по передаче данных из формы в подчиненную форму.
24 сообщений из 24, страница 1 из 1
Вопрос по передаче данных из формы в подчиненную форму.
    #32550605
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть главная форма, в ней DataGrid с информацией и кнопка View.
Есть подчиненная форма, содержащая некоторое количество текстовых полей.

Задача - при нажатии кнопки Enter,двойном клике или нажатии кнопки View должна открываться подчиненная форма, методом ShowDialog(), и в текстовых полях должны быть значения выделенной в DataGrid записи.

В связи с этим вопросы:

1) Как передать значения в подчиненную форму?

2) Какие события возникают в DataGrid при нажатии Enter и двойном клике?

Зарание спасибо.
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550652
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть главная форма, в ней DataGrid с информацией и кнопка View.
Есть подчиненная форма, содержащая некоторое количество текстовых полей.

Задача - при нажатии кнопки Enter,двойном клике или нажатии кнопки View должна открываться подчиненная форма, методом ShowDialog(), и в текстовых полях должны быть значения выделенной в DataGrid записи.

В связи с этим вопросы:

1) Как передать значения в подчиненную форму?

2) Какие события возникают в DataGrid при нажатии Enter и двойном клике?


По первому вопросу алгоритм действий может быть следующий:

1) Вернуть например текущий DataRowView, через CurrencyManager
2) Передать его в модальную форму
3) Где присвоить переменной этой модальной формы, например m_row
3) произвести DataBinding textboxов с вашим m_row

С каким из этих пунктов возникают трудности?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550683
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если просто присвоить значения полей выделенной записи переменным типа String и объявить их как Pablic Share?
Или это не есть правильный путь?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550723
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А если просто присвоить значения полей выделенной записи переменным типа String и объявить их как Pablic Share?
Или это не есть правильный путь?

Правильный путь который работает...
Можно объявить все Label (TextBox) в модальной форме с модификатором Friend. И напрямую присвоить необходимое значение.
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550729
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы исключить двухсмысленность,
>Правильный путь который работает...

Правильный путь - это путь который работает :-)
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550746
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, сейчас попробую и так и так в качестве тренировки, в смысле с CurrencyMenager, все равно чуствую с ним разбираться придется.

А по поводу событий на Enter и двойной клик на выделенной записи?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550777
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вообще за объект CurrencyMenager, ни где ничего внятного прочесть не могу:(,пойду MSDN ковырять...
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550811
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А что вообще за объект CurrencyMenager, ни где ничего внятного прочесть не могу:(,пойду MSDN ковырять...

Правильно CurrencyManager

Один из вариантов:
Код: plaintext
1.
2.
3.
4.
Dim crm As CurrencyManager = Me.BindingContext(Me.dataGrid1.DataSource, Me.dataGrid1.DataMember)
Dim row as DataRowView = CType(crm.Current, DataRowView)
MsgBox(row("myColumnName1"))
MsgBox(row("myColumnName2"))

где DataGrid1 - ваш DataGrid, а myColumnName название вашего столбца


>А по поводу событий на Enter и двойной клик на выделенной записи?
Подпишитесь на событие DoubleClick вашего DataGridTextBoxColumn.TextBox, по поводу Enter аналогично на KeyUp
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550833
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ошибся ,Manager конечно...
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32550990
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает, в главной форме.
Допустим объявляем row как Pablic Shared.

А как в подчиненной форме присвоить полям значения столбцов?

Я сделал так txtCompany.Text = MainForm.row("Name")

С txtCompany.DataBinding у меня не работает, возможно я просто пока не знаю синтаксис:(
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32551021
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А как в подчиненной форме присвоить полям значения столбцов?

Если пошли по такому пути, то проще передать в подчиненную форму объект DataRowView, а не подбираться к нему из подчиненной. Хотя можно сделать так и так.

Код в главной форме:
Код: plaintext
1.
2.
3.
4.
5.
Dim crm As CurrencyManager = Me.BindingContext(Me.dataGrid1.DataSource, Me.dataGrid1.DataMember)
Dim row as DataRowView = CType(crm.Current, DataRowView)

Dim f as myModalForm = new ModalForm() ' ModalForm подчиненная форма
f.Edit(row) // Вызываем модальную подчиненную форму

Код в модальной форме:
Код: plaintext
1.
2.
3.
4.
5.
Public Sub Edit(ByVal row as DataRowView)
   me.txtCompany.Text = row("name")
   ' bla-bla-bla
   Me.ShowDialog()
End Sub
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32551125
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, так тоже заработало, сейчас буду ковырятьс я с событиями.
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32551191
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вопрос, как подписаться на DoubleClick для DataGridTextBoxColumn1.TextBox?

Пишу

Private Sub dgForm1_DblClick() Handles DataGridTextBoxColumn1.
После точки идет перичесление событий среди которых DublClick нет:(

Или нужно создать переменную DataGridTextBoxColumn1.TextBox и назначать события для нее?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32551639
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencat
Еще один вопрос, как подписаться на DoubleClick для DataGridTextBoxColumn1.TextBox?

Пишу

Private Sub dgForm1_DblClick() Handles DataGridTextBoxColumn1.
После точки идет перичесление событий среди которых DublClick нет:(

Или нужно создать переменную DataGridTextBoxColumn1.TextBox и назначать события для нее?


А вы как определяете коллекцию TableStyles "программно" или визуально в редакторе VS.NET?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32551814
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмно.
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32551861
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencat
Програмно.


Ну тогда у вас код должен быть похожий на этот, и надо добавить по одной строчке к каждому объекту DataGridTextBoxColumn + саму процедуру обработки DoubleClick (DblClickHandler например).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim ts as DataGridTableStyle = New DataGridTableStyle()
ts.MappingName = "myTableName" 
Dim column as DataGridTextBoxColumn

column.MappingName = "column1" 
column.HeaderText = "Столбец 1"
AddHandler column.TextBox.DoubleClick, AddressOf DblClickHandler ' Подписались на dblclick
ts.GridColumnStyles.Add(column)

column = Nothing
column.MappingName = "column2" 
column.HeaderText = "Столбец 2"
AddHandler column.TextBox.DoubleClick, AddressOf DblClickHandler
ts.GridColumnStyles.Add(column) 

' и т.д для всех столбцов
dataGrid1.TableStyles.Clear() ' Очистили TableStyles collections
dataGrid1.TableStyles.Add(ts)  ' добавили TableStyle в наш DataGrid

Private Sub DblClickHandler(ByVal sender As Object, ByVal e As EventArgs)
    MsgBox("DblClick")
End Sub
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32552206
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, код получился такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
'DataGridTextBoxColumn6
            DataGridTextBoxColumn6.HeaderText = "Дата занесения"
            DataGridTextBoxColumn6.MappingName = "DataZan"
            DataGridTextBoxColumn6.Width =  120 
            DataGridTextBoxColumn6.Alignment = HorizontalAlignment.Center
            DataGridTextBoxColumn6.NullText = "N/A"
            AddHandler DataGridTextBoxColumn6.TextBox.DoubleClick, AddressOf DblClickHandler
            AddHandler DataGridTextBoxColumn6.TextBox.KeyUp, AddressOf DblClickHandler

Последняя строчка, это я пытаюсь подписаться на событие по нажатию кнопки Enter, но VS подчеркивает DblClickHandler как ошибку, очевидно нужно передать функции какойто параметр, т.е. какую клавишу я нажимаю, так?Каким образом?

И второе, в итоге получается что приходится выполнять три клика, сначала выделяется запись, а потом уже двойной клик. Можно ли что либо с этим сделать в стандартном DataGrid без написания нового класса?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32552272
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последняя строчка, это я пытаюсь подписаться на событие по нажатию кнопки Enter, но VS подчеркивает DblClickHandler как ошибку, очевидно нужно передать функции какойто параметр, т.е. какую клавишу я нажимаю, так?Каким образом?


Handlerы KeyUp и DoubleClick конечно же разные:
Object Browser
Public Event KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Member of: System.Windows.Forms.Control

Public Event DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs)
Member of: System.Windows.Forms.Control


И в KeyUp вы должны определить что нажата была именно клавишва Enter и после того вызвать свою процедуру просмотра View.

dencatИ второе, в итоге получается что приходится выполнять три клика, сначала выделяется запись, а потом уже двойной клик. Можно ли что либо с этим сделать в стандартном DataGrid без написания нового класса?


Это проблема тоже решаема
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32552314
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
Это проблема тоже решаема


Вот пример_в_точку по этой проблеме:
http://www.syncfusion.com/faq/winforms/Files/datagriddoubleclick_vb.zip
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32552474
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас буду разбираться.

А по поводу Enter, процедуру обработки пишу так:

Код: plaintext
1.
2.
3.
4.
5.
Private Sub EnterClick(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter Then
            MessageBox.Show("Click Enter")
        End If
    End Sub

а в описаниях столбцов например
Код: plaintext
1.
AddHandler DataGridTextBoxColumn6.TextBox.KeyUp, AddressOf EnterClick

Но ни какого эффекта, что я делаю не правильно?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32552553
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencatСпасибо, сейчас буду разбираться.

А по поводу Enter, процедуру обработки пишу так:

Код: plaintext
1.
2.
3.
4.
5.
Private Sub EnterClick(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter Then
            MessageBox.Show("Click Enter")
        End If
    End Sub

а в описаниях столбцов например
Код: plaintext
1.
AddHandler DataGridTextBoxColumn6.TextBox.KeyUp, AddressOf EnterClick

Но ни какого эффекта, что я делаю не правильно?

У вас все правильно.

Эффект будет (при KeyPress), но не такой какой нужен. Поэтому придется все таки писать свой класс от DataGridTextBoxColumn, и чтобы не быть голословным http://www.syncfusion.com/faq/winforms/Files/DataGridTextBoxKeys.zip

P.S. Я уже как то давал здесь ссылку на Syncfusion FAQ по DataGrid,
Советую вам его посмотреть, наверняка найдете варианты решения будущих проблем
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32552619
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, будем посмотреть.
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32571852
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кусочек кодаMe.regn.Text = rown("reg_n")
Me.cont.Text = rown("container")

а как можно проверить null ли, допустим, rown("container") или нет?
...
Рейтинг: 0 / 0
Вопрос по передаче данных из формы в подчиненную форму.
    #32571908
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так как вопрос не по теме отвечаю тут
/topic/101785&pg=-1

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по передаче данных из формы в подчиненную форму.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]