PDA

View Full Version : سوال: ارسال يك كنترل به فرم ديگر (كپي كنترل)



sinashahab
چهارشنبه 23 شهریور 1390, 00:37 صبح
سلام دوستان

يه چند وقته من سر اين موضوع گير كردم و خيلي لازمش دارم.

ميخوام يه كنترل رو به فرم ديگه بفرستم و همون كنترل روي فرم جديد دقيقا بياد.
اين كدامه :
public frmShow(Label lbl)
{
InitializeComponent();

this.Height -= 35;
this.Width -= 20;
label1=lbl;
}

ولي اين كار نميكنه. ميخوام اينطوري بدون بررسي جز به جز Properties ها بتونم اين كار رو بكنم چون كنترلي كه مد نظرم هست (نمودار) نميشه به روش پروپرتيس ها وارد شد.

ممنون ميشم يه راه حل مناسب ارائه كنيد:تشویق::تشویق:

S30S60
چهارشنبه 23 شهریور 1390, 10:47 صبح
سلام.. راستش من فکر میکنم اینطوری عین کنترل رو به فرم دیگه می فرستیم یعنی به جای کپی کردن کنترل رو cut می کنیم .. اگه کد رو اینجوری تغییر بدیم کنترل در فرم دوم نشون داده می شه و انگار در فرم اول از بین میره

public void frmShow(Label lbl)
{
this.Controls.Add(lbl);
}


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

اگه نتونستم کمکی بکنم شرمنده .. موفق باشی

sinashahab
چهارشنبه 23 شهریور 1390, 11:04 صبح
خيلي ممنون

ولي كنترلي كه من استفاده ميكنم ، خاصيت هاش به صورتي نيس كه بشه به اين راحتي جابجا بشه و اينا.

ولي از اين روشي كه شما گفتيد در WPF بجاي پاك شدن اين اررور رو ميده Specified element is already the logical child of another element. Disconnect it first.
اينم تقريبا شبيه چيزي هست كه شما گفتين. يعني 2تا نميتونه باشه.

خوب حالا اگه كسي راه حلي ميدونه كمك كنه:لبخند:

مهدی فرزاد
چهارشنبه 23 شهریور 1390, 11:52 صبح
سلام
بهتر بود سئوالتون رو توی بخش WPF می پرسیدی

این روشی که شما میخوای بری باید اول کنترل رو در فرم اولی حذف کنی

من یک مثال برات مینویسم

فرض کن 2 تا فرم داری که توی فرم اول یک گرید گذاشتی که توش یک دکمه هست
و میخوای این دکمه رو دقیقا با همین خصوصیت کپی کنی توی فرم دوم
پس اول یک گرید توی فرم دوم میگذاری (یا هر Panel دیگه )
بعد این کد رو مینویسی
Window1 win2 = new Window1();
this.grid.Children.Clear();
win2.grid.Children.Add(this.button1);
win2.ShowDialog();

sinashahab
شنبه 02 مهر 1390, 10:33 صبح
جواب صحيح تر :

اينجا بحث شد ولي در نهايت به اين رسيديم : http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/1e3adda3-4273-4d1c-b3f9-d9fc72d462b8
Chart newChart = new Chart(); MemoryStream ms = new MemoryStream();
chart1.Serializer.Save(ms);
newChart.Serializer.Load(ms);
ms.Dispose();
//end

به همين سادگي