PDA

View Full Version : سوال: کامپوننت ها در سي شارپ



MohammadGh2011
سه شنبه 03 آبان 1390, 19:48 عصر
بسم الله الرحمن الرحيم
سلام عليکم خدمت مديران محترم و دوستان عزيز
سوالاتي درمورد کامپوننت ها در سي شارپ دارم که با اجازه ي دوستان و مديران ميخوام مطرح کنم.
من تاپيک هايي که در مورد کامپوننت ها داشتم ميخوندم، نفهميدم که چه جورياست به خاطر همين اقدام به ايجاد تاپيک کردم.
لطفا يکي از دوستان کامل و واضح برامون توضيح بده که کامپوننت ها اصلا چي هستند وبايد چه جوري بسازيمشون و چگونه تو برنامه هامون همون کامپوننتي رو که ساختيم ازشون استفاده کنيم؟
اگرچه خودم تقريبا جواب سوالام رو ميدونم ميخوام يکي از اساتيد عزيز برام کامل توضيح بده.

کامپوننت ها در ويژوال بيسيک (اون طور که من ميدونم)به اين صورت ميباشد:
اکثر فرمت اونها OCX.* ميباشند
براي استفاده کردن اونها هم به راجتي ميتونيم با زدن روي گزينه ي Add Components اونها رو اضافه کنيم و از اون ها استفاده کنيم.
و تعريفي که من در ويژوال بيسيک از اون ها دارم اينه:کامپوننت ها کد هايي هستند که به صورت يک فايل در اومدند که کار مارو تو کد نويسي آسون ميکنند و کدهامون ديگه شلوغ نميشه و...

اما در سي شارپ چي؟

saeedhushmand
سه شنبه 03 آبان 1390, 21:18 عصر
کامپوننت ها ابزارهایی با فرمت dll , exe و... هستند که گاهی وقت ها باعث زیبا شدن پروژه و گاهی هم برای آسان شدن کار ما مورد استفاده قرار می گیرند مثلا یک کامپوننت می تونه باعث نمایش تقویم و استفاده از تاریخ و یا برای نمایش ساعت بر روی form یعنی هم برای زیباسازی فرم و هم برای نمایش ساعت و می تونی اون ها رو از کلیک زاست کردن روی Toolbox و انتخاب ایتم Choose Item و از منوی باز شونده Browes و انتخاب مکان کامپوننت به Toolbox اضافه کنی

درباره ساختشم چیزی نمیدونم که بهت بگم

MohammadGh2011
سه شنبه 03 آبان 1390, 21:32 عصر
سلام عليکم
وقتي کد کامپوننتم رو اضافه کردم رو فورمم از کد زير ارور گرفت

InitializeComponent();
اين کد رو من ننوشتم خودش بود.مشکل کجاست؟


درباره ساختشم چیزی نمیدونم که بهت بگم
ساختش رو خودم ميدونم که چه جوريه.

wolf_majid
سه شنبه 03 آبان 1390, 22:23 عصر
سلام عليکم
وقتي کد کامپوننتم رو اضافه کردم رو فورمم از کد زير ارور گرفت

InitializeComponent();


منظورتون رو از اینکه کد کامپوننت را روی فرم گذاشتید نگرفتم
لطف کنید کدتون را بزارید

saeedhushmand
سه شنبه 03 آبان 1390, 22:36 عصر
من خودم گاهی وقتها وقتی کامپوننتی رو فرمم می خواهم بزارم error می ده و نمی زاره
بعضی کامپوننت ها اضافه می شه و هیچ کدی نمی خواد
بعضی از اون ها مثل persia.dll که من برای تاریخ استفاده کنم باید ازمنو project و add refrence و Browse اون اضافه کنی و سپس کدش بنویسی که توی فرمت ظاهر بشه
شاید تو این کارو نکردی

wolf_majid
سه شنبه 03 آبان 1390, 22:51 عصر
من خودم گاهی وقتها وقتی کامپوننتی رو فرمم می خواهم بزارم error می ده و نمی زاره
احتمالا" ورژن دات نت کامپوننت با ورژن دات نت solution شما همخونی نداره

بعضی از اون ها مثل persia.dll که من برای تاریخ استفاده کنم باید ازمنو project و add refrence و Browse اون اضافه کنی و سپس کدش بنویسی که توی فرمت ظاهر بشه
اگر کامپوننت باشه که می تونی بکشیش توی toolbox ولی اگر یک کتابخانه کلاس باشه (منظورم در مورد غیر کامپوننته) بله باید فضای کاریش رو یوزینگ کنی

اما فکر نمی کنم منظور دوستمون نوشتن دستور using بود

MohammadGh2011
چهارشنبه 04 آبان 1390, 12:30 عصر
منظورتون رو از اینکه کد کامپوننت را روی فرم گذاشتید نگرفتم
لطف کنید کدتون را بزارید

نوشته شده توسط saeedhushmand
...سپس کدش بنویسی که توی فرمت ظاهر بشه
شاید تو این کارو نکردی

سلام عليکم
دوستان من يک کامپوننت همون طور که دوستمون در پست2 فرمودند اضافه کردم روي فورمم
آيا براي اجرا کردن اون کامپوننت روي فورممون(موقعي که برنامه اجرا شد) بايد کدي بنويسيم که اون اجرا بشه؟؟

wolf_majid
چهارشنبه 04 آبان 1390, 14:40 عصر
نه
آیا شما زمانی که یک دکمه بر روی فرم می گذارید برای اجرا شدنش کد می نویسید ؟ ( کامپوننت های دیگه هم همینطور عمل می کنند مگر استثنایی باشه )

MohammadGh2011
چهارشنبه 04 آبان 1390, 15:08 عصر
پس چرا از InitializeComponent(); خطا ميگيره؟
بينيد من خودم همينجوري يک کامپوننتي رو درست کردم که فقط يک تکست داخلش بود و يک کامند باتن.
بعد يک پروژه جديد از نوع application ايجاد کردم و اون dll رو که درست کرده بودم رو اضافه کردم روي فورمم با Choose Item که دوستمون در پست2 گفتن.حالا وقتي برنامه رو اجرا ميکنم از همون چيزي که من گفتم خطا ميگيره در حالي که من اصلا کد نويسي نکردم.
!!!!!!!!!

MohammadGh2011
چهارشنبه 04 آبان 1390, 15:16 عصر
درست شد دوستان
دوباره يک کامپوننت ديگه ساختم و دوباره اضافش کردم درست شد.ديگه اون خطا رو نميده.
ممنونم از دوستاني که راهنمايي کردند.

MohammadGh2011
چهارشنبه 04 آبان 1390, 16:20 عصر
سوال:
دوستان عزيز فرق بين اين دو چيه:
1-روي ToolBox کليک راست کنيد و Choose Items... رو بزنيد وبعد کامپوننتتون رو اضافه کنيد.
2-از منوي Project>Add Reference رو انتخاب کنيد و...

دوستان کامل اين دوتا رو توضيح بديد و + بگيد که ما براي اضافه کردن کامپوننت بايد از کدوم يکي از اين راه ها اقدا کنيم؟
(اگرچه دوستمون براي اضافه کردن کامپوننت در پست 2 فرمودند ولي به خاطر اين که تفاوت اين گزينه ها رو بدونيم دوباره سوال کردم)
ممنون

wolf_majid
چهارشنبه 04 آبان 1390, 18:11 عصر
روش اول زمانی استفاده می شه که خروجی یک کنترل باشه (مثل UserControl و یا کتابخانه کلاسی که از یک کنترل ارث بری کرده )
روش دوم زمانی استفاده میشه که یک کتابخانه کلاس شامل یک یا چند کلاس با توابعشان به صورت dll در اومده باشند و ما به اون کلاس ها توی برناممون نیاز داشته باشیم ( مثل کلاس های مدیریتی و ... )

در ضمن این نکته رو هم بگم که روش اول به صورت اتوماتیک روش دوم را اجرا می کنه یعنی dll مورد نظر را به پروژه اضافه می کنه

ali reza mansoori 2
چهارشنبه 04 آبان 1390, 18:30 عصر
سلام
دوستان میخواستم از کامپونت glassPanel که داخل برنامه مخاطبین من (http://barnamenevis.org/showthread.php?307036-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%85%D8%AE%D8%A7%D8%B7%D8%A8%DB%8C%D9%86-%D9%85%D9%86-(%D9%86%D8%B3%D8%AE%D9%87-%D8%A7%D8%B2%D9%85%D8%A7%DB%8C%D8%B4%DB%8C)&highlight=%D9%85%D8%AE%D8%A7%D8%B7%D8%A8%DB%8C%D9% 86+%D9%85%D9%86) هستش رو داخل پروژه ام استفاده کنم
این کامپونت نه Dll داره نه OCX و داخل پروژه به صورت یه فایل با پسوند CS اضافه شده
اگر ممکنه روش اضافه کردن این کامپونت به پروژه های دیگر رو توضیح بدید
خیلی ممنون

sobaisobai
چهارشنبه 04 آبان 1390, 18:35 عصر
سلام
تو Project Explorer روی سولوشن برنامت کلیک راست کن و گزینه Add Existing رو انتخاب کن
بعد Glass Panel رو اضافه کن
دو تا فایله Glass panel.cs و Glasspanel.designer.cs
موفق باشی

wolf_majid
چهارشنبه 04 آبان 1390, 18:52 عصر
سلام
تو Project Explorer روی سولوشن برنامت کلیک راست کن و گزینه Add Existing رو انتخاب کن
بعد Glass Panel رو اضافه کن
دو تا فایله Glass panel.cs و Glasspanel.designer.cs
موفق باشی

البته این رو هم یادتون باشه که باید فضای کاریش رو به فضای کاری پروژه خودتون تغییر بدید

اگر نیاز بود پیام بدید تا dll اش رو بسازم

ali reza mansoori 2
چهارشنبه 04 آبان 1390, 19:07 عصر
سلام
تو Project Explorer روی سولوشن برنامت کلیک راست کن و گزینه Add Existing رو انتخاب کن
بعد Glass Panel رو اضافه کن
دو تا فایله Glass panel.cs و Glasspanel.designer.cs
موفق باشی
این کار رو انجام دادم ولی شی مورد نظر به تول بار اضافه نشد در ضمن من فقط فایل glassPanel.cs رو داخل پروژه مخاطبین من پیدا کردم


البته این رو هم یادتون باشه که باید فضای کاریش رو به فضای کاری پروژه خودتون تغییر بدید

اگر نیاز بود پیام بدید تا dll اش رو بسازم
اگر امکان داره کمی درباره تغییر فضای کاری و نحوه تبدیل اون به Dll هم توضیح بدید

sobaisobai
چهارشنبه 04 آبان 1390, 19:14 عصر
وقتی اضافه میکنی داخل ToolBox یه Tab ایجاد میشه به نام پروژه خودت که می تونی از Glass panel استفاده کنی

ali reza mansoori 2
چهارشنبه 04 آبان 1390, 19:32 عصر
همانند عکس اول glassPanel.cs رو باز میکنم ولی اصلا به تول باکسم چیزی اضافه نمیشه
وقتی روی glassPanel.cs کلیک میکنم همانند عکس دوم صفحه ای ظاهر میشه و وقتی روی Toolbox این پنجره کلیک میکنم هیچ اتفاقی رخ نمیده

sobaisobai
چهارشنبه 04 آبان 1390, 19:43 عصر
واست آپلود کردم

ali reza mansoori 2
چهارشنبه 04 آبان 1390, 20:47 عصر
دوست عزیز واقعا ممنون از این که وقت میزاری و منو راهنمایی می کنی
واقعا نمیدونم چه جوری تشکر کنم
ولی من می خوام 2010 کار کنم و وقتی پروژه ای که آپ کردی رو به 2010 تبدیل میکنم اخطار میده
اگر امکان داره همین پروژه رو به 2010 تبدیل کنید و آپ کنید
اگر هم آموزشی در این موضوع سراغ دارید معرفی کنید

sobaisobai
چهارشنبه 04 آبان 1390, 20:55 عصر
اینم 2010
آموزشش رو هم تو چندتا پست قبل گفتم

ali reza mansoori 2
پنج شنبه 05 آبان 1390, 19:16 عصر
دوستان شرمنده از این که این قدر مزاهم میشم
فکر کنم مشکل از ویندوز یا C#2010 من باشه چون اصلا تغییرات رو بعد از استفاده بعد از این شی رو نمیتونم ببینم
دوستان اگر امکان داره شی Glass Panel رو به OCX تبدیل کنید

wolf_majid
پنج شنبه 05 آبان 1390, 19:38 عصر
ورژن .net رو به 4 تغییر بدید
دقت کنید روی .net 4 client profile نباشه

ali reza mansoori 2
پنج شنبه 05 آبان 1390, 19:48 عصر
اگر میشه کمی بیشتر توضیح بدید

wolf_majid
پنج شنبه 05 آبان 1390, 19:58 عصر
در قسمت solution پروژتون (سمت شمال شرقی نرم افزار vs ) :چشمک:
بر روی Properties کلیک کنید
اونجا ورژن دات نت نوشته شده که احتمالا" از شما 4 client profileٍ
اون رو به 4 تغییر بدید

ali reza mansoori 2
پنج شنبه 05 آبان 1390, 21:04 عصر
این کار رو انجام دادم ولی باز هم تغییرات روی خروجی اعمال نمیشه
تغییرات که اعمال میکنم ذخیره میشه مانند تصویر سمت چپ ولی وقتی اجرا میکنم مانند تصویر سمت راست هستش

wolf_majid
پنج شنبه 05 آبان 1390, 21:19 عصر
پروژتون رو Rebuild کنید
از منوی Build گزینه Rebuild Solution رو انتخاب کنید

ali reza mansoori 2
پنج شنبه 05 آبان 1390, 21:27 عصر
دوست عزیز خیلی ممنون مشکلم رفع شد
اگر امکان داره کمی درباره Rebuild Solution توضیح بدید

soltan-mohammadi
سه شنبه 22 آذر 1390, 13:18 عصر
کسی میدونه که در فرم سی شارپ چه جوری می شه یک منوی باز شونده ایجاد کرد

zarrinnegar
سه شنبه 22 آذر 1390, 14:21 عصر
اگر امکان داره کمی درباره Rebuild Solution توضیح بدید

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