Я не могу вставить строку перед datagridview Как передать переменную Form1..Form2..Form3 в datagridview?
У меня есть datagridview с одним и тем же именем в нескольких формах. Мне нужно получить от них значения, изменив имя «FORMNAMEXXXX». DataGridView1.CurrentRow.Cells(0).Value
Dim ownerType = Owner.GetType()
Dim formowner = ownerType.Name.ToString
Dim id As Integer = formowner.DataGridView1.CurrentRow.Cells(0).Value.ToString
но у меня есть эта ошибка: «DataGridView1» не является членом «String»
Отвечает ли это на ваш вопрос? Есть ли способ передавать значения между формами в vb.net? (Без использования публичной переменной)
Можете ли вы привести пример, как передать значение ячейки datagridview из одной формы в другую через showdialog?
@ГвидоМ. Зачем вам нужно идти через диалог? Помогают ли Примеры свойств? (Вам нужна недвижимость Public ReadOnly.)
Может быть интересно следующее: stackoverflow.com/questions/69711574/…
У меня есть 3 формы, в форме1 и форме2 есть datagridview. с form3 я должен получить значение ячейки формы, которая вызвала form3. это мое требование. Я не хочу создавать одно общедоступное свойство. Мне удалось получить имя формы, которая вызвала form3, но если я использую XXXXNAME.DataGridView1.CurrentRow.Cells(0).Value.ToString, у меня есть эта ошибка: «DataGridView1» не является членом «String»
@ГвидоМ. Используете ли вы «экземпляр по умолчанию» Form3 или создаете новый экземпляр, когда хотите использовать Form3? И что вы имеете в виду под "позвонили"?
Непонятно, что вы делаете и какова общая цель. Ваше приложение может выиграть от повторной оценки дизайна, но это трудно определить на основе предоставленной информации. Пожалуйста, добавьте изображения ваших форм в свой ОП (исходный пост). Также добавьте подробности о том, какова общая цель проекта.





У меня есть 3 формы, в форме1 и форме2 есть datagridview. с form3 мне нужно получить значение ячейки формы, которая вызвала форма3. это мое требование. Я не хочу создавать один Public свойство. Мне удалось получить имя формы, которая называется form3 но если я использую XXXXNAME.DataGridView1.CurrentRow.Cells(0).Value.ToString У меня есть эта ошибка "DataGridView1" не является членом "String"
Итак, в Form1 и Form2 вам нужно передать «владельца» при отображении Form3:
' ... in Form1 / Form2 ...
Form3 f3 = new Form3()
f3.ShowDialog(Me) ' <-- pass in Form1/Form2 via "Me"
' ... or possibly ...
f3.Show(Me)
Теперь в Form3 вы можете использовать свойство .Owner, чтобы получить ссылку на Form1 или Form2. После этого вы можете ИСКАТЬ этот DataGridView «по имени»:
' ... in Form3 ...
Dim frm As Form = Me.Owner
Dim ctl As Control = frm.Controls.Find("DataGridView1", True).FirstOrDefault()
If Not IsNothing(ctl) AndAlso TypeOf ctl Is DataGridView Then
Dim dgv As DataGridView = DirectCast(ctl, DataGridView)
' ... do something with "dgv" ...
Debug.Print(dgv.CurrentRow.Cells(0).Value.ToString)
End If
Нет, вам определенно не нужно этого делать. Что должно произойти, так это то, что эти другие формы передают соответствующие данные при создании этой формы. Либо объявите конструктор с параметром для этого идентификатора, либо объявите свойство. Эти другие формы могут затем передать аргумент конструктору или установить свойство. Этой форме не нужно ничего знать о созданной форме. Все, что ему нужно, это значение идентификатора, а не то, откуда оно взялось.