ورود

View Full Version : معادل دستور tabcontrol1.selectedtab.controlsدر wpf



amir-haghighi
شنبه 22 اسفند 1388, 21:05 عصر
سلام . من در یکی از برنامه های خودم که در سی شارپ مینوشتم از دستور بالا استفاده می کردم . حالا میخوام همون دستور رو در wpf استفاده کنم اما نمیشه ! لطفا راهنمایی کنید . با تشکر .

رضا عربلو
یک شنبه 23 اسفند 1388, 15:41 عصر
(tabcontrol1.SelectedItem as TabItem).Content

amir-haghighi
یک شنبه 23 اسفند 1388, 17:24 عصر
با سلام و تشکر از شما .

خوب میخوام بدونم که در کد بالا as دقیقآ چه عملی رو انجام میده ؟ و همچنین Content به چی اشاره داره ؟

رضا عربلو
یک شنبه 23 اسفند 1388, 20:59 عصر
as برای type casting (تبدیل نوع) بکار می رود.
و content کنترل درون tabItem انتخاب شده را نشان می دهد. مثلاً می تواند یک StackPanel باشد.

amir-haghighi
دوشنبه 24 اسفند 1388, 10:34 صبح
سلام .

من کد رو به صورت زیراستفاده کردم::

UserControl1 obj = (UserControl1)(tabcontrol1.SelectedItem as TabItem).Content

خوب وقتی کد رو اجرا کردم در ران تایم ارور داد و گفت که نمیتونه کنترل گرید رو به نوع یوزر کنترل تبدیل کنه !

خوب علتش چی بوده ؟

ضمنآ این رو هم بگم که در تب کنترل (در همه تب آیتم ها)یک کنترل گرید هست و در داخل کنترل گرید هم یک یوزر کنترل . حالا من میخوام یک نمونه از یوزر کنترل بسازم و یک متد رو که در یوزر کنترل ایجاد کردم فراخوانی کنم ! امیدوارم کاملا متوجه مطلب بشید با توضیحاتی که دادم .

رضا عربلو
دوشنبه 24 اسفند 1388, 14:04 عصر
((tabcontrol1.SelectedItem as TabItem).Content as Grid).Children[0] as UserControl1

cazino86
دوشنبه 04 مرداد 1389, 12:24 عصر
سلام ...

من هم همین مشکل رو دارم اما یه کم کارم متفاوته !

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

ضمنآ اگه بخوام یک فرم دیگه باز کنم و از داخل اون فرم یک متد رو که در فرم اصلی وجود داره فراخوانی کنم تا اون متد هم با استفاده از کد ((tabcontrol1.SelectedItem as TabItem).Content as Grid).Children[0] as UserControl1 یک متد رو که در یوزر کنترل وجود داره فراخوانی کنه ! باید چه کدی رو بنویسم ؟

اصلا میتونم از فرمی که باز میشه مستقیمآ به یک متد که در داخل یوزر کنترلی که در فرم اصلی وجود داره مستقیمآ دسترسی داشته باشم بدون اینکه به فرم اصلی ارجاع داشته باشم ؟

رضا عربلو
دوشنبه 04 مرداد 1389, 21:53 عصر
به هزار یک روش می تونی این کار را انجام دهی.
از جمله ساده ترینش این است که refrence شی ات در یک کانستراکتور usercontrol بگیری و در یک متغییر ذخیره کنی.

cazino86
سه شنبه 05 مرداد 1389, 20:47 عصر
سلام ...

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


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

cazino86
پنج شنبه 07 مرداد 1389, 12:20 عصر
خوب دقیقآ سوالی که دارم اینه :

در فرم اصلی یک تب کنترل قرار دادم.در تب کنترل (در همه تب آیتم ها)یک کنترل گرید هست و در داخل کنترل گرید هم یک یوزر کنترل user1. یک یوزر کنترل دیگه هم دارم که اسمش رو میذارم user2.

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

میخوام از داخل یوزر کنترلuser1 (که خودش در فرم اصلی در داخل تب کنترل هست)این متد رو که در فرم اصلی قرار داره فراخونی کنم تا در فرم اصلی یک تب آیتم در تب کنترل اظافه بشه و یک نمونه هم از user2 در داخل این تب آیتم . چطور باید این کار رو کنم ؟

من یک نمونه از فرم اصلی درست کردم و متدی که میخواستم رو از داخل یوزر کنترل صدا زدم . دستوراتی که در داخل این متد هست از داخل user1 اجرا میشه اما من هیچ کنترلی بر روی کنترل های موجود در فرم اصلی و همین طور user2 ندارم !

دلیلش چیه و چطور باید کد نویسی کنم ؟

cazino86
شنبه 09 مرداد 1389, 19:22 عصر
سلام ...

جوابی نیست یا اینکه این کار رو کسی بلد نیست انجام بده ؟

مهدی فرزاد
سه شنبه 12 مرداد 1389, 22:40 عصر
سلام
به این یه نگاه بنداز فکر کنم جواب میگیری
http://www.oopc.mihanblog.com/post/22

cazino86
پنج شنبه 28 مرداد 1389, 12:07 عصر
سلام .

خیر این کد هم مشکل من رو برطرف نکرد .
http://cazino86.persiangig.com/SoftWare/send%20form%20in%20user%20control.rar

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

مهدی فرزاد
پنج شنبه 28 مرداد 1389, 12:18 عصر
سلام
من توی لینک زیر با aghayx در همین مورد بحث کردیم و در نهایت ایشون فایلش رو داد و من اصلاح کردم نگاه کنید و ببنید چه جوری من بین دو یوزر که از وجود هم اطلاع ندارن ارتباط برقرار کردم
کد های قبلی که بود و با کدهای من مقایسه کنید
http://www.barnamenevis.org/forum/showthread.php?t=232835&page=2

مهدی فرزاد
پنج شنبه 28 مرداد 1389, 12:52 عصر
بازم سلام
دوست عزیز من برات یک مثال آماده کردم
ولی بجای یوزر کنترل از فرم استفاده کردم و لی هیچ فرقی نمیکنه چه فرم چه یوزر چه کلاس
ولی متاسفنه من نمیدونم چرا توی این تالار نمیتونم ضمیمه کنم ایمیل بدید تا براتون امیل کنم
حتما ببین

اگه vs2010 نداری میتونی توی vs2008 یک پروزه جدید ایجاد کنی ولی حتما هم نام با پروژه من و فرم های منو توش Add کنی و بررسی کنی ببینی چه کردم