PDA

View Full Version : مبتدی: كار با فرم ها



mori5858
پنج شنبه 03 مرداد 1392, 17:11 عصر
سلام دوستان
چندتا فرم دارم كه كاربر مثل ويزارد بايد يكي يكي اطلاعات رو كامل كنه و بره سراغ فرم بعدي
چطوري بايد فرم هارو طراحي كنم كه كاربر در هرمرحله اي كه بود با زدن دكمه انصراف كل فرم ها بسته بشه.
يعني شي هايي كه ميخوام از فرم هام بسازم عمومي باشه كه روي همه فرم ها شناخته بشه تا بشه كل فرم هارو بست

danialafshari
پنج شنبه 03 مرداد 1392, 17:29 عصر
سلام
توی هر مرحله می تونی اطلاعات رو به متغیر های درون کلاس پاس بدی و برای انصراف هم همه ی متغیر ها رو null کنی
مزیتش هم اینه که می تونی کل اطلاعات رو به منظور تائیدیه در فرم آخر نشون بدی
موفق باشی

mori5858
پنج شنبه 03 مرداد 1392, 17:34 عصر
سلام
توی هر مرحله می تونی اطلاعات رو به متغیر های درون کلاس پاس بدی و برای انصراف هم همه ی متغیر ها رو null کنی
مزیتش هم اینه که می تونی کل اطلاعات رو به منظور تائیدیه در فرم آخر نشون بدی
موفق باشی

يني ميگي يه كلاس تعريف كنم هرچي اطلاعات ميخوام از فرم ها بريزم اون تو
آخر سر هم موقع ثبت توي بانك از اون كلاس اين كارو انجام بدم
آره؟

danialafshari
جمعه 04 مرداد 1392, 00:10 صبح
يني ميگي يه كلاس تعريف كنم هرچي اطلاعات ميخوام از فرم ها بريزم اون تو
آخر سر هم موقع ثبت توي بانك از اون كلاس اين كارو انجام بدم
آره؟

بله. دقیقاً

SEPIDEYESHAB
جمعه 04 مرداد 1392, 02:18 صبح
سلام دوستان
چندتا فرم دارم كه كاربر مثل ويزارد بايد يكي يكي اطلاعات رو كامل كنه و بره سراغ فرم بعدي
چطوري بايد فرم هارو طراحي كنم كه كاربر در هرمرحله اي كه بود با زدن دكمه انصراف كل فرم ها بسته بشه.
يعني شي هايي كه ميخوام از فرم هام بسازم عمومي باشه كه روي همه فرم ها شناخته بشه تا بشه كل فرم هارو بست


خوب داداش برای راحتی کار هم میتونی Tab Control بذاری روی فرمت و هر صفحه اش رو به یه سری از اطلاعاتت اختصاص بدی !

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

از طرفی شاید طرف بخواد اطلاعات 2 صفحه قبلش رو ویرایش کنه ، اون موقع کلی وقت باید صرف این موضوع کنی !

mori5858
جمعه 04 مرداد 1392, 09:55 صبح
بله. دقیقاً

براي اشيايي كه از فرم ها درست ميكنم چي؟ اونارو چيكار كنم؟ چون معلوم نيس چندتا فرم باز ميشه يا روي كدوم فرم كاربر دكمه انصراف رو براي بسته شدن همه فرم ها ميزنه

mori5858
جمعه 04 مرداد 1392, 09:58 صبح
خوب داداش برای راحتی کار هم میتونی Tab Control بذاری روی فرمت و هر صفحه اش رو به یه سری از اطلاعاتت اختصاص بدی !

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

از طرفی شاید طرف بخواد اطلاعات 2 صفحه قبلش رو ویرایش کنه ، اون موقع کلی وقت باید صرف این موضوع کنی !

مرسي از نظرت
اما اينجا نميشه از تب كنترل استفاده كرد، يني ميشه ها اما بايد فرم ها به صورت يكي يكي بره جلو
براي ويرايش فرم هاي قبلي هم بايد دكمه برگشت رو بزنه تا بتونه برگرده سراغ فرم قبلي و ويرايش كنه
ممنون از پيشنهادت

mori5858
جمعه 04 مرداد 1392, 11:58 صبح
كسي بلد نبود؟ :ناراحت:

danialafshari
جمعه 04 مرداد 1392, 12:03 عصر
آخه چرا اینقدر خودتو گیج میکنی و مسئله رو برای خودت میپیچونی؟
قبلا یه نمونه درست کردم دوباره میزارم

mori5858
جمعه 04 مرداد 1392, 12:09 عصر
من 2008 دارم اينو نميتونم باز كنم :ناراحت:
نمي پيچونم فقط ميخوام بدونم چطوري اشيا فرم رو توي كلاس تعريف كنم كه بشه به همش يه جا دسترسي داشت كه براي hide كردن يا نشون دادن مجبور نباشم هي يه شي جديد تعريف كنم

danialafshari
جمعه 04 مرداد 1392, 12:24 عصر
من 2008 دارم اينو نميتونم باز كنم :ناراحت:
نمي پيچونم فقط ميخوام بدونم چطوري اشيا فرم رو توي كلاس تعريف كنم كه بشه به همش يه جا دسترسي داشت كه براي hide كردن يا نشون دادن مجبور نباشم هي يه شي جديد تعريف كنم

وارد پوشه کناری بشید و فایل .csproj رو باز کنید

mori5858
جمعه 04 مرداد 1392, 12:57 عصر
من اصل مشكلم روي فرم هاشه
چندبار ممكنه كاربر توي فرم ها عقب و جلو بره
اگه قرار باشه هربار توي دكمه فرم بعدي و فرم قبلي يه شي از فرم رو نيو كنم كه نميشه
من ميخوام مثلا از فرم 1 يه دونه شي سراسري تعريف كنم كه بتونم اونو hide يا show كنم
نه اينكه براي هر بار يه شي جديد ازش تعريف كنم

danialafshari
جمعه 04 مرداد 1392, 13:18 عصر
استفاده از فرم باز

Mohammadm
جمعه 04 مرداد 1392, 13:49 عصر
اگر تمایل به استفاده از کنترل tab ندارید بنابراین باید از چندین فرم استفاده کنید
روش کار به این صورته که برای رفتن از یک فرم به فرم دیگه از این کد استفاده کنید
فرض بر اینکه بعد از کلیک بر روی گزینه بعدی از Form1 به فرم Form2میرویم
this.Visible = false;
Form2 frm2 = new Form2();
frm2.Show();
البته قبل از اجرای کد فوق باید مقادیر رو به فرم بعدی انتقال بدیم
یکی از امنترین روش برای انتقال مقادیر در سطح برنامه کاربردی(نه فقط در سطح یک فرم ) استفاده از کلاس AppDomain میباشد
برای انتقال مقادیر از روش زیر استفاده کنید
AppDomain app = AppDomain.CurrentDomain();
app.SetData("key", objectOfClass);
key : نامی دلخواه که توسط شما انتخاب میشود و از این نام جهت خواندن اطلاعات ارسال شده استفاده میشود.
objectOfClass : در واقع همان مقداری است که میخواهید انتقال دهید و میتواند از هر نوعی باشد (عدد - رشته - شیئی از کلاس)
SetData() : تابعی برای ارسال مقادیر در سطح برنامه
و برای دریافت اطلاعات در Form2 با توجه مثالمون از قطعه کد زیر استفاده کنید.
AppDomain app = AppDomain.CurrentDomain;
object o = app.GetData("key");

GetData() : تابعی برای دریافت داده که نوع object را بر میگرداند و اگر شما از شیئی از کلاس برای ارسال داده استفاده کردید باید در این قسمت به نوع مربوطه تبدیل نمایید.
key : نام همان کلیدی است که در قسمت ارسال داده از Form1 نوشتید.
اگر در Form2 قصد برپشت به Form1 را دارید از کد زیر استفاده کنید.
Application.OpenForms["Form1"].Visible = true;
this.Close();
برای برگشت به فرم قبلی بجای this.close() میتوانید از کد this.Visible=false هم استفاده کنید که توصیه نمیشود.

omidrayaneh.68
جمعه 04 مرداد 1392, 14:43 عصر
بله همون طور که دوستان گفتند میتونی از کلاس ها ااستفاده کنی و درون کلاس ها متغییری تعریف کنی مثلا
public static string store;
بعد تو فرم 1 تکس یا لیبل هر مقداری بود به متغییر store که تو کلاس در خط بالا تعریف کردیم اختصاص میده
Class.store = txt.Text;
حالا تو فرم 2 مقدار متغییر store را به یه تکس تو فرم 2 انتقال میدی البته تو کلاستون میتونی متغییر های زیادی تعریف کنی وهر مقداری را ارجاع بدی به فرم دیگه
text1.Text = Class.store;
این یه مثال خیلی کوچک بود امید وارم متوجه و موفق باشید