PDA

View Full Version : ارسال و دریافت کنترل بین فرم



ordebehesht
سه شنبه 28 شهریور 1391, 02:47 صبح
میخوام بین دو تا فرم یه کنترل رو ارسال کنم چه کنم

mehrdad1261
سه شنبه 28 شهریور 1391, 04:06 صبح
سلام دوست عزیز
سوالت مقداری نامفهومه . اگر مقداری رو می خواهی جا به جا کنی بین چندین فورم می تونی از متغییر سراسری استفاده کنی . ولی اگر قرار بود که من یه کنترول را جابهجا کنم می رفتم و مثل همون کنترول در فورم دیگه درست می کردم ( کنترول را می ساختم ) .
امیدوارم کمکت کرده باشم .

ali_habibi1384
سه شنبه 28 شهریور 1391, 08:01 صبح
از Tag هر فرم استفاده كنيد. شما ميتونيد از Tag براي هر چيزي استفاده كنيد مثلا من توش از datatable تا string ميريزم و اونطرف ميتونم اونو بازيابي كنم.

abcd_a
سه شنبه 28 شهریور 1391, 09:13 صبح
از Tag هر فرم استفاده كنيد. شما ميتونيد از Tag براي هر چيزي استفاده كنيد مثلا من توش از datatable تا string ميريزم و اونطرف ميتونم اونو بازيابي كنم.
سلام
من از پارامتر فرم استفاده میکنم یا کنترل های را که می خوام تو فرم های دیگه بهش دسترسی داشته باشنم به صورت public تعریف میکنم
سوال:با استفاده از tag امکان ارسال چند مقدار وجود داره مثلا یک دیتا تیبل و یک استرینگ ؟

Parham.D
سه شنبه 28 شهریور 1391, 09:29 صبح
میتونید از کدهای زیر هم استفاده کنید.

کد در یک فرمی که میخواهد کنترل را دریافت کنه:


public Form4(TextBox control)
{
this.Controls.Add(control);
}




و در فرمی که میخواهید کنترل را ارسال کنید:


private void button1_Click(object sender, EventArgs e)
{
TextBox t = (TextBox)CloneObject(textBox1);

Form4 form4 = new Form4(t);

form4.Show();
}

private object CloneObject(object o)
{
Type t = o.GetType();
PropertyInfo[] properties = t.GetProperties();

Object p = t.InvokeMember("", System.Reflection.BindingFlags.CreateInstance, null, o, null);

foreach (PropertyInfo pi in properties)
{

if (pi.Name != "Text" && pi.Name != "SelectedText" && pi.Name != "HideSelection" && pi.Name != "Lines")
{

if (pi.CanWrite)
{
pi.SetValue(p, pi.GetValue(o, null), null);

}
}
else if (pi.Name == "Text")
{
if (pi.CanWrite)
{
pi.SetValue(p, "go", null);

}
}
}

return p;
}


کد را بهینه کنید و بسته به کنترلی که میفرستید تغییرش بدید.

ali_habibi1384
سه شنبه 28 شهریور 1391, 10:33 صبح
سلام
من از پارامتر فرم استفاده میکنم یا کنترل های را که می خوام تو فرم های دیگه بهش دسترسی داشته باشنم به صورت public تعریف میکنم
سوال:با استفاده از tag امکان ارسال چند مقدار وجود داره مثلا یک دیتا تیبل و یک استرینگ ؟
شما توي سوالتون پرسيديد يك كنترل منم اينو پيشنهاد كردم. حالا اگر ميخوايد بيشترش كنيد تا ببينيد تا چقد انعطاف داره بايد بگم خير. آيا ميشه در يك متغير دو نوع داده ريخت !!!!!!!!؟
براي دو نوع داده دو نوع متغير نياز هست . به نظر من يه كلاس از فرم بسازيد و پراپرتي هايي به اون كلاسها اضافه كنيد در برنامه تون از اون كلاسها استفاده كنيد . اينجوري هم اصوليه هم منطقي. اون Tag هم واسه راه اندازي دم دستي خوبه.