PDA

View Full Version : پاس کردن اطلاعات دیتاگرید به تکست باکس ها



R_Rajaee_Rad
یک شنبه 18 تیر 1391, 14:27 عصر
سلام
میخوام اطلاعات یه سطر از دیتاگرید رو انتقال بدم به textbox های یه فرم دیگه

اصولی ترین راهی که فهمیدم اینه که با استفاده از کلاس و خاصیت ها این کار رو انجام بدیم
فرض کنید .گرید ما دارای 2 سطر کد و نام هست..یه همچین کلاسی براش می سازیم



public class Customer
{
string _Name;

public string Name
{
get { return _Name; }
set { _Name = value; }
}


int _id;

public int Id
{
get { return _id; }
set { _id = value; }
}
}


حالا چه طوری میشه توی فرم 1 به این 2 property دسترسی پیدا کرد و اونها رو مقداردهی کرد تا در فرم دوم اطلاعات سطر انتخابی گرید رو نمایش بدن؟

the king
دوشنبه 19 تیر 1391, 01:29 صبح
کلاس ساختن خوبه، اما نه در این مورد خاص کمک چندانی نمی کنه، کد کلاس فرم مورد نظر رو تغییر بدهید بهتره تا یک کلاس جدید.
در فرم اول تون مشخصه های اون DataGridView تون رو ببینید، یک مشخصه Modifiers داره، تغییرش دهید و فرضا بگذارید اش روی Public.
اونجایی هم که فرم دوم رو فراخوانی می کنید یادتون نره که Owner رو روی فرم اول تنظیم کنید تا فرم دوم بدونه با کی طرفه.
برای دسترسی به DataGridView مورد نظر رعایت کردن این نکته لازمه، منظورم اون this ئه :

Form2 f2 = new Form2();
f2.Show(this);

یا :

Form2 f2 = new Form2();
f2.ShowDialog(this);


حالا در کد فرم دوم تان جایی که قراره اطلاعات رو در TextBox قرار بدهید، فرضا رخداد Shown فرم، اندیس سطر و ستونی که محتویات فیلد اونجا است
رو مشخص کنید :

private void Form2_Shown(object sender, EventArgs e)
{
Form1 f1 = (Form1)Owner;
textBox1.Text = f1.dataGridView1.SelectedCells[0].Value.ToString();
}

مرتضی تقدمی
دوشنبه 19 تیر 1391, 06:35 صبح
سلام
روش اول پیشنهاد میشه.
کد رو بصورت زیر تغییر بدید:


public class Customer
{
private static string _Name;

public static string Name
{
get { return _Name; }
set { _Name = value; }
}


private static int _id;

public static int Id
{
get { return _id; }
set { _id = value; }
}
}


برای دسترسی یا مقدار دهی هم بصورت زیر عمل کنید:


Customer.Name = "val";

this.Text = Customer.Name;

موفق باشید

jafarpalideh
دوشنبه 19 تیر 1391, 06:58 صبح
میشه بیشتر توضیح بدید این کد رو آقای مقدمی و دوستان دیگه که این پست رو میبینن و یاد دارن؟
این کدهارو دقیقا کجاها باید بنویسیم؟

مرتضی تقدمی
دوشنبه 19 تیر 1391, 07:12 صبح
کدهای قسمت اول رو در یک کلاس و کدهای قسمت دوم رو هرجایی که دوست داری استفاده کنی.

R_Rajaee_Rad
سه شنبه 20 تیر 1391, 07:24 صبح
و برای نمایش داده ها در تکست باکس در فرم دوم(که کنترل های تکست باکس قرار دارند) این کد رو باید بنویسیم

private void Form2_Load(object sender, EventArgs e)
{

txtname.Text = Cust.Name;
}

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