PDA

View Full Version : مبتدی: انتقال اطلاعات datagridview از یک فرم به textboxهای فرم دیگر؟



1000net
شنبه 16 اسفند 1393, 12:25 عصر
سلام دوستان
من دوتا فرم دارم که داخل یک فرم دیتاگریدویو هستش و داخل فرم دیگه تکست باکس ها که داخل یک پنل گذاشتم حالا چون تکت باکس داخل پنل است کد زیر ارور نال میده:

Application.OpenForms["frmanbar"].Controls["txtkid"].Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
و در صورتی که تکست باکس روی فرم قرار بگیره مشکلی ایجاد نمیشه

Davidd
شنبه 16 اسفند 1393, 12:37 عصر
سلام. تکست باکس جزء کنترل های پنل هست بنابراین شما باید داخل کنترل های پنل پیداش کنی. برای انتقال پارامتر بین دو فرم روش های بهتری هست که اگه جستجو کنی زیاد بحث شده. Application.OpenForms["frmanbar"].Controls["panelName"].Controls["txtkid"].Text

1000net
شنبه 16 اسفند 1393, 12:44 عصر
سلام. تکست باکس جزء کنترل های پنل هست بنابراین شما باید داخل کنترل های پنل پیداش کنی. برای انتقال پارامتر بین دو فرم روش های بهتری هست که اگه جستجو کنی زیاد بحث شده. Application.OpenForms["frmanbar"].Controls["panelName"].Controls["txtkid"].Text

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

Davidd
شنبه 16 اسفند 1393, 12:51 عصر
سلام خیلی ممنون
ولی از همین کد هم استفاده کردم بازم ارور میده با تشکر

چه اروری؟ به جای panelName باید نام پنل خودتون قرار بدین.

1000net
شنبه 16 اسفند 1393, 12:56 عصر
چه اروری؟ به جای panelName باید نام پنل خودتون قرار بدین.


Application.OpenForms["frmanbar"].Controls["panel2"].Controls["txtkid"].Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
129228

یونس ابراهیمی
شنبه 16 اسفند 1393, 13:04 عصر
سلام دوست عزیز ... شاید آموزش زیر به دردتون بخوره


شاید یکی از بهترین کاربردهای Propertyها در انتقال اطلاعات بین فرم ها باشد. یک برنامه ویندوزی ایجاد کرده و یک فرم (Form2) به برنامه اضافه کنید. بر روی فرم اصلی برنامه یک کنترل DataGridView و در روی فرم دوم یک کنترل TextBox قرار دهید :


http://www.w3-farsi.com/wp-content/uploads/2014/08/datagridtotext.jpg (http://www.w3-farsi.com/wp-content/uploads/2014/08/datagridtotext.jpg)


حال بر روی فرم دوم دکمه F7 را زده تا وارد محیط کدنویسی آن شوید و یک خصوصیت ازنوع رشته تعریف کنید :



using System.Windows.Forms;

namespace DatagridToTextbox
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

public string Text
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
}
}
حال در رویداد Load فرم اول و CellClick دیتاگرید کدهای زیر را بنویسید :

using System;
using System.Windows.Forms;

namespace DatagridToTextbox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.ColumnCount = 2;
this.dataGridView1.Rows.Add(new object[] { "A","B" });
this.dataGridView1.Rows.Add(new object[] { "C", "D" });
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
Form2 f2 = new Form2();
f2.Text = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
f2.ShowDialog();
}
}
}


حال برنامه را اجرا و بر روی یکی از خانه های دیتاگریدویو کلیک کرده و نتیجه را مشاهده نمایید :

http://www.w3-farsi.com/wp-content/uploads/2014/08/datagridtotext1.jpg (http://www.w3-farsi.com/wp-content/uploads/2014/08/datagridtotext1.jpg)

مرجع :www.w3-farsi.com (http://www.w3-farsi.com/)

Mofid.m
شنبه 16 اسفند 1393, 13:38 عصر
از این روش استفاده کن

توی فرم دوم خاصیت Modifiers تکست باکس رو برابر با Public گذاشتم و بعد برای خاصیت CellMouseDoubleClick دیتاگرید فرم اول اینو نوشتم


Form2 f2 = new Form2();


f2.textBox1.Text = dataGridView1.CurrentCell.Value.ToString();

f2.ShowDialog();

1000net
شنبه 16 اسفند 1393, 13:53 عصر
ممنون
اره کدهای بالا در صورتی کار می کنن که فرم یک رو دوباره show کنم ولی مشکل اینجاست که فرم یک من اصلابسته نمیشه که بخام دوباره شودیالوگ کنم و برای همین اطلاعات داخل تکست باکس نمایش داده نمیشن.

یونس ابراهیمی
شنبه 16 اسفند 1393, 15:06 عصر
قسمت set و get آموزش بالا و به صورت زیر تغییر بدین


public string Text
{
get { return this.panel1.Controls["textBox1"].Text; }
set { this.panel1.Controls["textBox1"].Text = value; }
}

یونس ابراهیمی
شنبه 16 اسفند 1393, 15:23 عصر
فکر کنم کد خودتون رو به صورت زیر تغییر بدین هم میشه :


private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
Form2 f2 = new Form2();
f2.Controls["panel1"].Controls["textBox1"].Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
f2.ShowDialog();
}

1000net
شنبه 16 اسفند 1393, 20:15 عصر
فکر کنم کد خودتون رو به صورت زیر تغییر بدین هم میشه :


private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
Form2 f2 = new Form2();
f2.Controls["panel1"].Controls["textBox1"].Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
f2.ShowDialog();
}

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


Application.OpenForms["frmanbar"].Controls["txtkid"].Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();

younes221
شنبه 16 اسفند 1393, 21:32 عصر
دوست عزیز اشتباه شما همینجاست که باید کدتوت رو به صورت زیر بنویسید :


f2.Controls["panel1"].Controls["textBox1"].Text...

1000net
شنبه 16 اسفند 1393, 21:45 عصر
دوست عزیز اشتباه شما همینجاست که باید کدتوت رو به صورت زیر بنویسید :


f2.Controls["panel1"].Controls["textBox1"].Text...


اخه همیجوری هم نوشتم اما ارور داد و من مجبور شدم تکست باکس رو بیارم روی فرم و کد رو نیز عوض کنم.
ببخشید اگه کسی میتونه سورس بزاره ممنون میشم:
دو تا فرم که داخل یک فرم یک تکست باکس داخل پنل قرار دارد و در فرم دیگر یک دیتاگرید ویو حالا من میخام یکی از سلول های دیتاگرید ویو رو بیارم داخل تکست باکس بدون اینکه فرم ها بسته و باز بشن.

ghaedi70
یک شنبه 17 اسفند 1393, 00:34 صبح
ی کار ساده اینه ک چند تا متغیر از نوع استاتیک در فرم اول تعریف کنی بعد مقدار هر سلول از دیتا گرید برابر هر کدوم قرار بدی.و در فرم دوم فقط کافیه صداشون بزنی و بریزیشون تو تکست باکس
کدت زیاد میشه ولی ساده هست

mohsen8699
جمعه 14 فروردین 1394, 07:20 صبح
سلام دوست عزیز
بنده دقیقا کدی مثل کد شما نوشتم و تکست باکس های فرمی که قراره اطلاعات datagridveiw به اون منتقل بشه هم روی فرم هستش و نه توی پنل
اما تو این حالت هم به من ارور null می ده میشه راهنماییم کنید؟؟

ضمنا طبق فرضی که خودت اشاره کردی فرمی که قراره اطلاعات بهش منتقل بشه امکان load مجدد (همون استفاده دوباره از متد show()) رو نداره

از دوستان دیگه هم خواهش میکنم اگه اطلاع دارن جواب بدن

یونس ابراهیمی
جمعه 14 فروردین 1394, 09:41 صبح
فکر کنم دلیل اصلیش اینه که (((اسم پنل یا تکس باکس))) تون رو اشتباه می نویسید.

مثلا برنامه زیر کامل جواب میده

با فرض اینکه یک دیتاگرید بر روی فرم اول باشه

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

129977

129978

129979

کدهای فرم اول به صورت زیر میشه :



using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

Form2 f2 = new Form2();

private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.ColumnCount = 2;
this.dataGridView1.Rows.Add(new object[] { "A", "B" });
this.dataGridView1.Rows.Add(new object[] { "C", "D" });
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
f2.Controls["panel1"].Controls["textBox1"].Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
f2.ShowDialog();
}
}
}



به خط 24 و اسم کنترل ها توجه کنید

aria2006
شنبه 29 فروردین 1394, 13:20 عصر
سلام
با کد زیر میتوان اطلاعات از دیتاگریدویو رو انتخاب و به تکست باکس های فرم دیگری پاس داد. در ضمن فرم دیتاگرید هم بسته میشهالبته این کد داخل رویداد CellMouseDoubleClick دیتاگرید نوشته شده

;()Application.OpenForms["archive"].Controls["txtbox1"].Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString
;()Application.OpenForms["archive"].Controls["txtbox2"].Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString
( if (dataGridView1.CurrentCell.Selected
}
;this.Visible = false
;()this.Hide
{

h.gheidrlou
یک شنبه 26 مهر 1394, 19:16 عصر
ضمن تشکر از دوستان و اساتید سوال اینست که اگه یک فرم جستجو داشته باشی و مثلا بخواهی در دو یا چند فرم همین قضیه اعمال بشه و مثلا مشتری را با دایل کلیک در تکست جستجوی فرم دوم فراخوان کنی خطا میده چون این کد فقط برای یک فرم هستش نه چند فرم
اگر فرم دوم یا سومی در کار بود چه شرطی باید نوشت؟
تشکر از پاسخ دوستان

hA.d1983
سه شنبه 28 اردیبهشت 1395, 08:04 صبح
سلام مهندسها
چطور میشه اطلاعات چند تا تکست بکس از یک فرم رو به دیتاگریدویوی یک فرم دیگه اضافه کرد ؟
ممنون میشم راهنمایی کنید.

سیدسبحان
سه شنبه 28 اردیبهشت 1395, 09:06 صبح
سلام مهندسها
چطور میشه اطلاعات چند تا تکست بکس از یک فرم رو به دیتاگریدویوی یک فرم دیگه اضافه کرد ؟
ممنون میشم راهنمایی کنید.

سلام دلاور
باید دیتاگرید فرم دوم رو به صورت public دربیاری تا در فرم اول که تکست باکس ها هستن، دسترسی داشته باشی(خاصیت mdify (اسم دقیقش یادم نیست) دیتا گرید رو public کن)
وقتی که یه شی ازین فرم دوم ، در فرم اول میسازی، میتونی در دیتاگریدش ، مقدار دهی کنی

hadi-win32
جمعه 30 آذر 1397, 11:40 صبح
خدایی دمت گرم...این بهترین روش بود