PDA

View Full Version : سوال: انتقال اطلاعات از ديتارگريد يك فرم به فرم ديگر



moory1364
جمعه 18 اسفند 1391, 09:57 صبح
با عرض سلام
داخل vb.net با کد زیر عمل می کنه اما برای C#‎‎‎‎‎‎ رو بلد نیستم

فرم شماره 1

Private Sub TextBox28_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox28.KeyUp
'کد زیر واسه این نوشتم که هر وقت کاربر کلیک اف 4 رو زد اطلاعات فرم 2 نمایش داده بشه
If e.KeyCode = Keys.F4 Then
Dim frm1 As New form1
frm1.ShowDialog()
End If
End Sub

فرم شماره 2

Private Sub DataGridView1_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
'کد زیر اطلاعات رو از داخلش دیتاگرید به تکست باکس وارد میکنه
'سپس فرم رو میبنده
form2.TextBox28.Text = DataGridView1.CurrentRow.Cells(0).Value.ToString()
form2.TextBox20.Text = DataGridView1.CurrentRow.Cells(1).Value.ToString()
Me.Close()

End Sub

دوستان ممنون میشم کمکم کنید

mehdi zanjani
جمعه 18 اسفند 1391, 10:13 صبح
سوالتون به شدت تکراریه . یه سرچ میزدید حتما پیدا میکردید.

نیازی به تکس باکس واسه انتقال یه گرید به گرید دیگه نیست و البته شاید من دقیقا منظور شما رو نفهمیدم ولی راه حل من برای انتقال سطر های یه گرید ویو به گریدویوی دیگه اینجوریه :

حالت اول اینه که با همون دیتاتیبلی که ریخیتید تو گرید ویو همونم بریزید تو گریدویو دیگه تون (یه شئ جدید از کلاس فرم دیگه تون ایجاد کنید ، خاصیت Modifier گرید ویو رو Public کنید و گرید ویو رو با دیتاتیبل پر کنید)

حالت بعدی اینه که شما بعضی از ردیف های گرید ویو رو میخواید که اونم با استفاده از DataTable و DataSet و foreach اول تمام ستون های گرید ویو رو بریزید تو دیتاتیبل بعد تمام سطر هاش رو بریزید داخل دیتاتیبل و در نهایت DataSource گریدویو فرو بعدی رو برابر دیتاتیبل قرار بدبد. البته میتونید با این روش کل اطلاعات یه گرید ویو رو به گرید ویوی دیگه منتقل کنید.

موفق باشید.

moory1364
جمعه 18 اسفند 1391, 10:41 صبح
نه دوست خوبم منظورم از گرید به تکس باکس دیگس
چون چیزی دستگر کننده در فرم و گوگل پیدا نکردم تاپیک باز کردم نمونه کد قرار دادم
مشکل اساسی من هم کار نکردن CellDoubleClick بر روی فرم ها می باشد
البته من گریدم رو با کد نویسی پر می کنم

mehdi zanjani
جمعه 18 اسفند 1391, 12:10 عصر
خب فرقی نمیکنه که تو این حالت Value اون Cell کی روش دابل کلیک میکنی رو بریز تو یه temp string بعد اونو بفرست به TextBox فرم دیگه . امتحان کن اگه نتونستی بگو کد بنویسم بذارم.

moory1364
جمعه 18 اسفند 1391, 21:11 عصر
باید همین کد باشه اما مشکلی که دارم کلید f4 کار نمیکنه در حالی که keypreviwe فعال هستش

private void certif_code_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F4)
{
Tblcertificate frm1 = new Tblcertificate();
frm1.ShowDialog();
}
}


private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
Persenel ts = new Persenel();
ts.certif_code.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
ts.certif_name.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
}

khokhan
جمعه 18 اسفند 1391, 22:14 عصر
درود بر شما

این نمونه عینا چیزی است که شما می خواین :لبخند:

البته با روش فرمهای mdi درست کردم می تونی از کدهاش استفاده کنی

بخت یارتان

alexmcse
جمعه 18 اسفند 1391, 22:35 عصر
foreach (Form frm in Application.OpenForms)
{
if (frm is Form1)
{
Form1 f1 = (Form1)frm;
f1.label1.Text = "hello";
}
}

نام فرم یک را با نام فرم برنامت تغیییر بده

بجای لیبل از کنترل دلخواه استفاده کن
البته با مدیفایر پابلیک