PDA

View Full Version : ایجاد و حذف یک button در زمان اجرا و نمایش آن باتن در اجرای بعدی برنامه



nurani
یک شنبه 14 آذر 1395, 19:24 عصر
با سلام خدمت اساتید محترم
در بعضی از برنامه ها اگه دقت کرده باشید کنترلی مانند باتن رو به فرم اضافه یا حذف می کنن
چطوری اینکار رو انجام میدن
به طور نمونه یک پنل دارم با هر بار کلیک روی یک کنترل می خوام از سمت چپ به فاصله ۲۰ پیکسل باتن ها اضافه بشه

و اگه ۱۰تا اضافه کردم برای حذف هم می خوام از آخرین باتن ها شروع به حذف بشه

و مورد آخر اینکه در اجرای بعدی برنامه هم دوباره هم آخرین تغییرات (هر چند تا باتن که به هنگام بستن برنامه بود) لود بشه

m2011kh
یک شنبه 14 آذر 1395, 22:44 عصر
سلام دوست عزيز.

يسري راهنمايي ميكنم كه اگه دنبالش بري ميتوني خودت راه حلشو پيدا كني ولي اگرم نتونستي امشب و يا هر وقتي كه به سيستمم دسترسي پيدا كردم يه مثال كوچولو مينويسم.

همونطور كه ميدوني باتن يا تكست باكس يا هر كنترلي يك شي از يك كلاس هست كه توي فايل Form.Designer
Cs كامپايلر خودش ايجاد ميكنه موقع لود شدم فرم. دقيقا كاري كه توهم ميتوني بكني. مثلا از كلاس باتن يك شئ ايجاد كن و اونو به ليست كنترل هاي فرم اضافه كن. و اصلا فرقي نداره كه اينكار قبل از اجرا انجام بشه يا در حين اجرا.

اينكه دفعه بعدي هم همينطور لود بشه :

روش هاي خيلي زيادي وجود داره كه بايد انتخواب كني. بايد اين اطلاعات رو ذخيره كني.چطوري؟ خب سوال خوبيه. ميتوني حتي XML ذخيره كني. يا يه ديتا بيس كوچيك. يا حتي يه فايل ساده تكست و موقع اجراي دوباره برنامه از روش بازخواني كني.

دنبال جوابش با توجه به راهنمايي يا بگرد اگه پيدا نكردي يه نمونه كوچيك ميذارم.

موفق و سربلند باشيد.
M.M.D

nurani
دوشنبه 15 آذر 1395, 18:43 عصر
نحوه ایجاد باتن ها رو بلدم و اگه کمی تحقیق کنم مکان قرار گیری هر باتن رو از آخرین باتن ایجاد شده رو هم یاد خواهم گرفت
حالا چگونه با کلیک روی یک کنترل مانند پیکچر باکس با هر یک کلیک آخرین باتن های ایجاد شده یکی یکی حذف بشه
برای ذخیره هم می دونم باید یه جایی ذخیره بشه به نظرم Sqlite بهترین گزینه باشه ولی نمی دونم چی رو و چگونه ذخیره کنم
و یک سوال دیگر فرض کن یک کنترل برای اضافه کردن باتن دارم که وقتی روش کلیک کنم یک پنل باز میشه و تکست باتن و رنگ باتن و مکان قرار گیری باتن رو درون تکست باکس ها درج می کنم و به این شکل ایجاد می کنم حالا چطوری براش رویداد کلیک ایجاد کنم

m2011kh
دوشنبه 15 آذر 1395, 19:43 عصر
نحوه ایجاد باتن ها رو بلدم و اگه کمی تحقیق کنم مکان قرار گیری هر باتن رو از آخرین باتن ایجاد شده رو هم یاد خواهم گرفت
حالا چگونه با کلیک روی یک کنترل مانند پیکچر باکس با هر یک کلیک آخرین باتن های ایجاد شده یکی یکی حذف بشه
برای ذخیره هم می دونم باید یه جایی ذخیره بشه به نظرم Sqlite بهترین گزینه باشه ولی نمی دونم چی رو و چگونه ذخیره کنم
و یک سوال دیگر فرض کن یک کنترل برای اضافه کردن باتن دارم که وقتی روش کلیک کنم یک پنل باز میشه و تکست باتن و رنگ باتن و مکان قرار گیری باتن رو درون تکست باکس ها درج می کنم و به این شکل ایجاد می کنم حالا چطوری براش رویداد کلیک ایجاد کنم

سلام.

برای اضافه کردن هر رویدادی باید یه تابع رو به عنوان عملگر اون رویداد کنترل بهش بدی که هر وقت رویدادی اتفاق افتاد اون تابعو اجرا کنه. مثلا:

nachrichtTextBox.KeyPress += new KeyPressEventHandler(nachrichtTextBox_KeyPress);

حالا من یه نمونه برات نوشتم ولی متأسفانه وقت کافی نداشتم قشنگ روش فکر کنم با اولین ایده ای که به ذهنم رسید نوشتم. یه کلاس درست کردم و توش تابع Key press نوشتم. بعد توی فرم با کلیک روی باتن تست ده تا تکست باکس با فاصله های مساوی زیر هم درست میشه و نمایش داده میشه. تابعی که برای تکست پرسش نوشته بودم رو گذاشتم به عنوان تابع رویداد تکست باکس ها. روی هر کدوم از تکست باکس ها که فوکوس کنی و اینتر بزنی، متنش میشه "hahaha" به سورسی که ضمیمه کردم یه نگاهی بنداز جواب سوالتو پیدا میکنی. البته اگه روش فکر کنی شاید راه های بهتر و بهینه تری هم پیدا کنی ولی خب همونطور که گفتم وقتم کافی نبود و با آولین ایده ای که به ذهنم رسید نوشتم.




و دوم برای اینکه چی رو چطور ذخیره کنی. سعی کن فایل Form1.Designer.cs و Form1.cs که خود کامپایلر میسازه رو با Notepad باز کنی. یه نگاه بهش بنداز ببین خود ویژال استودیو چطور ذخیره کرده با چه فرمتی. میتونی ازش الهام بگیری.


بازم اگه سوالی شبهه ای چیزی بود بپرس امشب اگه وقت نکردم فردا جواب میدم.( البته اگه در توانم باشه :) ).


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

143684
143685
143686
موفق و سربلند باشید.
M.M.D

group45
سه شنبه 16 آذر 1395, 13:33 عصر
با سلام
راهنماییتون میکنم اگه بگردید حتما بهش میرسید
اولا در ایونت مربوط به کلیک کردن یک باتن کد بزنید و دو تا تکست باکس بزارید برای اندازه و دو تا دیگه برای مکان باتن جدید
در زمان کلیک
یه شی از نوع باتن ایجاد کنید با اسمی که بتونید بهش دسترسی داشته باشید
بهد اندازه جدید بهش بدید و بعد جاشو مشخص کنید و بعد به فرمتون اضافش کنید.