نمایش نتایج 1 تا 18 از 18

نام تاپیک: چند سوال در مورد فرمها

  1. #1

    چند سوال در مورد فرمها

    سلام
    چند سوال در مورد فرمها داشتم:
    1.میخوام بعد از ورود اطلاعات کاربر درفرم login وزدن دکمه ورود ، فرم لاگین بسته بشه و فرم اصلی برنامه نشون داده بشه. یه سری از بچه ها گفته بودن فرم لاگین رو باید Hide کرد و یک سری گفته بودند اینکار اشتباهه و باید بسته بشه. بنده هم با نظر دوم موافقم ولی متاسفانه نمی تونم این کار بکنم.کدهای

    رو نوشتم ولی حل نشد. کسی می تونه کمکم کنه؟
    البته این رو هم بگم که search کردم و 5-6 تاپیک در این مورد پیداکردم اما نمیدونم چرا هیچ کدومشون مشکلم رو حل نکرد.
     
    home frm = newhome();
    frm.ShowDialog();
    Application.Exit();

    2.منظور از فرم فرزند و پدر چیه؟
    اصلا چه دلیلی برای تعیین فرمهای فرزند و پدر وجود داره؟ چرا باید اونها رو تعیین کنیم؟ اگه اینکار رو نکنیم مشکلی پیش میاد؟

  2. #2
    این مثال رو فکر کنم ارژنگ فرستاده بود...برای قسمت اول سوالت حتما به دردت میخوره...
    login:login
    password:password
    در مورد سوال دومت هم همینقدر میدونم که فرم های فرزند فرمهایی هستن که داخل فرم اصلی(فرم پدر)باز میشن...مثلا تو برنامه ulead photo impact که یک برنامه کار با عکسه اگه چندتا عکس باز کنیم ، هر کدوم از اونا داخل یک فرم فرزند باز میشن...
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    فرم MDI) Multiple Document Interface)یا همون فرم پدر فرمیه که در خودش سایر فرمها رو باز می کنه. برای اینکه چنین فرمی داشته باشیم ، باید خاصیت IsMdiContainer فرم رو true کنیم. با true کردن این خاصیت رنگ زمینه فرم تیره میشه .
    هر فرم خاصیت دیگه ای داره به نام mdiparent که اگر این خاصیت رو مساوی یه فرم MDI قرار بدیم، فرم ما به عنوان فرزند اون فرم MDI در نظر گرفته میشه. برای اینکه یک فرم رو پدر یکی از فرمها قرار بدیم ، به صورت زیر عمل می کنیم:

    form2 f=new form2;
    f.mdiparent=this;
    f.show();


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

  4. #4
    اینم یه نمونه دیگه از فرم login که خودم نوشتم...جواب میده...ولی اگه این برنامه ایرادی داره (از نظر نوع برنامه نویسی و این حرفا) دوست دارم بدونم...ممنون...
    user name:amir
    password:ajorlo
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط karaji333 مشاهده تاپیک
    اینم یه نمونه دیگه از فرم login که خودم نوشتم...جواب میده...ولی اگه این برنامه ایرادی داره (از نظر نوع برنامه نویسی و این حرفا) دوست دارم بدونم...ممنون...
    user name:amir
    password:ajorlo
    از نظر کاری مشکلی ندارد، ولی از نظر طراحی:
    کدی که در لگین فرم در باتن کلیک نوشته شده بهتره که در کلاینتی که این فرم را استفاده میکنه باشد.
    اگر فکر کنید که وظیفه فرم لگین فقط گرفتن لگین و پسورد هست و نه هیچ کار دیگری.
    کلاینتی که از فرم لگین استفاده میکند ازش لگین و پسورد را میگیره و از یک کلاسه امنتیتی درخواست میکند که درست بودن و یا نبودن این لگین و پسورد را چک کند.
    به این ترتیب وظایف قسمت بندی شدند و در هرجا کدها مخصوص برایه انجم دادن کار بخصوصی شدند.
    در همان مثال اولی که فرستادید از این روش استفاده شده.

  6. #6
    کاربر تازه وارد آواتار Engineer_Yasin
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    خوزستان
    سن
    36
    پست
    38

    Arrow

    نقل قول نوشته شده توسط resident مشاهده تاپیک
    سلام
    چند سوال در مورد فرمها داشتم:
    1.میخوام بعد از ورود اطلاعات کاربر درفرم login وزدن دکمه ورود ، فرم لاگین بسته بشه و فرم اصلی برنامه نشون داده بشه. یه سری از بچه ها گفته بودن فرم لاگین رو باید Hide کرد و یک سری گفته بودند اینکار اشتباهه و باید بسته بشه. بنده هم با نظر دوم موافقم ولی متاسفانه نمی تونم این کار بکنم.کدهای

    رو نوشتم ولی حل نشد. کسی می تونه کمکم کنه؟
    البته این رو هم بگم که search کردم و 5-6 تاپیک در این مورد پیداکردم اما نمیدونم چرا هیچ کدومشون مشکلم رو حل نکرد.
     
    home frm = newhome();
    frm.ShowDialog();
    Application.Exit();

    2.منظور از فرم فرزند و پدر چیه؟
    اصلا چه دلیلی برای تعیین فرمهای فرزند و پدر وجود داره؟ چرا باید اونها رو تعیین کنیم؟ اگه اینکار رو نکنیم مشکلی پیش میاد؟
    تا آنجا که من می دونم فرقی بین دستور Hide و Close برای یک فرم وجود نداره!
    من واسه از یک فرم به فرم دیگر رفتن کد زیر را می نویسم!

    this.Hide()
    form2 frm=new form2()
    frm.showdialog()
    Application.Exit()

    خط آخر جز اصلی کد نیست و در واقع با دستور showdialog فرم 2 نمایش داده می شود و از این به بعد کدهای فرم 2 اجرا می شوند تا وقتی شما در کدهای خود فرم 2 را Close نکرده اید (یا ضربدر فرم را نزده اید) به دستور Application.Exit() نمی رسد و این دستور تکمیلی برای این است که بعد از زدن ضربدر فرم 2 فرم یک که در پشت پرده قرار دارد نیز بسته شود و برنامه به طور کامل بست شود!

  7. #7
    کاربر تازه وارد آواتار Engineer_Yasin
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    خوزستان
    سن
    36
    پست
    38
    الان تو یکی از پروژهای درسیم گشتم کد یکی از صفحات که نام کاربری و رمز عبور می گیره و با دیتابیس چک میکنه را می گذارم (البته چون کارهای اولم بود خیلی شلوغه!!) به بزرگواری خودت ببخش!!

    private void btnLogin_Click(object sender, EventArgs e)
    {

    objConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DBProf.mdb");
    string strDataAdaptor = "SELECT Sign ,Pass FROM Prof ";
    objDataAdapter = new OleDbDataAdapter(strDataAdaptor, objConnection);
    objDataSet = new DataSet();
    objDataAdapter.Fill(objDataSet, "Prof");
    objDataView = new DataView(objDataSet.Tables["Prof"]);
    objDataView.Sort = "Sign";
    int position = objDataView.Find(txtSign.Text);
    if (position != -1)
    {
    objDataView.Sort = "Pass";
    int position2 = objDataView.Find(txtPass.Text);
    if (position2 != -1)
    {
    frmStudent objStu = new frmStudent();
    this.Hide();
    objStu.ShowDialog(this);
    Application.Exit()
    }
    else
    {
    MessageBox.Show("مشخصه درس یا رمز عبور اشتباه می باشد!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }
    else
    {
    MessageBox.Show("مشخصه درس یا رمز عبور اشتباه می باشد!","Error",MessageBoxButtons.OK,MessageBox Icon.Error);
    }
    }

    private void btnBack_Click(object sender, EventArgs e)
    {
    frmMain objMain = new frmMain();
    this.Hide();
    objMain.ShowDialog(this);
    Application.Exit();
    }

  8. #8
    کاربر تازه وارد آواتار siavashr
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    هلند
    پست
    68
    دورود
    والا من دارم یه مسنجر مینویسم و با این مشکل برخورد کرده بودم.
    راهی که به نظر من رسید این بود که فرمها رو 1 dll کنترل کنه یعنی باز و بسته کردن فرمها رو در dll انجام میشه.
    نمیدونم این راه بدردت میخوره یا نه اگر توضیح بیشتر خواستی حتما در خدمتم.
    با سپاس

  9. #9
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط Engineer_Yasin مشاهده تاپیک
    الان تو یکی از پروژهای درسیم گشتم کد یکی از صفحات که نام کاربری و رمز عبور می گیره و با دیتابیس چک میکنه را می گذارم (البته چون کارهای اولم بود خیلی شلوغه!!) به بزرگواری خودت ببخش!!
    به جایه طلب بخشش تمیزش کنید، مثالی که در پست #۲ است راه تمیزتر اینکار است.
    در ضمن قاطی کردن کد اس.کیو.ال با منطق برنامه در لایه اینترفیس درست نیست.
    الان وقتش که Refactor ش کنید.

  10. #10
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط siavashr مشاهده تاپیک
    دورود
    والا من دارم یه مسنجر مینویسم و با این مشکل برخورد کرده بودم.
    راهی که به نظر من رسید این بود که فرمها رو 1 dll کنترل کنه یعنی باز و بسته کردن فرمها رو در dll انجام میشه.
    نمیدونم این راه بدردت میخوره یا نه اگر توضیح بیشتر خواستی حتما در خدمتم.
    با سپاس
    اگر یک توضیحات کلی در مورد این روش که با چه پترنی رابطه دارد و یا اینکه منطق کلی برایه این روشتان چی هست را بفرمائید سپاسگزارم.

  11. #11
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط Engineer_Yasin مشاهده تاپیک
    تا آنجا که من می دونم فرقی بین دستور Hide و Close برای یک فرم وجود نداره!
    Hide
    http://msdn2.microsoft.com/en-us/lib...trol.hide.aspx

    Close
    http://msdn2.microsoft.com/en-us/lib...orm.close.aspx

    Hide != Close

  12. #12
    کاربر تازه وارد آواتار siavashr
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    هلند
    پست
    68
    نقل قول نوشته شده توسط اَرژنگ مشاهده تاپیک
    اگر یک توضیحات کلی در مورد این روش که با چه پترنی رابطه دارد و یا اینکه منطق کلی برایه این روشتان چی هست را بفرمائید سپاسگزارم.
    دورود
    والا من دارم یه مسنجر مینویسم. همونطوری که میدونید از 2 بخش کلاینت و سرور تشکیل شده. من فرم اصلی که در واقع همون صفحه login هست رو اجرا میکنم و به سرور وصل میشم بعد از ایدی و پسورد یوزر رو میگیرم و میفرستم سرور سرور جواب مثبت یا منفی که میده بر میگرده و وارد یه dll میشه که من اونجا گفتم مثلا جواب مثبت باعث hide شدن فرم login و show شدن فرم body که همون صفحه اصلی مسنجر هست میشه.
    همینطوری برای هر فرم این کار رو کردم .
    راستش تقریبا 1 سالی طول کشید تا خودم هم فهمیدم چی به چیه و حالا دیگه مشکلی ندارم راحت فرم رو باز و بسته میکنم با استفاده از dll .
    البته نمیدونم این روش من اصلا بدرد کس دیگری میخوره یا نه اما فکر کنم سوال اولیه تقریبا چیزی تو همین مایه ها بود .
    با سپاس اگر توضیح دیگری لازم بود در خدمتم.

  13. #13
    از همه دوستانی که تجربیاتشونو گفتند ممنونم.

    آرژنگ جان مجددا نمونه برنامه هاتونو دیدم. ولی متاسفانه هیچ کدی برای بستن فرم ها ندیدیم.اگه امکان داره کدی رو که استفاده می کنید ، اینجا قرار بدید.
    متشکرم.

  14. #14
    نقل قول نوشته شده توسط writeshirin مشاهده تاپیک
    فرم MDI) Multiple Document Interface)یا همون فرم پدر فرمیه که در خودش سایر فرمها رو باز می کنه. برای اینکه چنین فرمی داشته باشیم ، باید خاصیت IsMdiContainer فرم رو true کنیم. با true کردن این خاصیت رنگ زمینه فرم تیره میشه .
    هر فرم خاصیت دیگه ای داره به نام mdiparent که اگر این خاصیت رو مساوی یه فرم MDI قرار بدیم، فرم ما به عنوان فرزند اون فرم MDI در نظر گرفته میشه. برای اینکه یک فرم رو پدر یکی از فرمها قرار بدیم ، به صورت زیر عمل می کنیم:

    form2 f=new form2;
    f.mdiparent=this;
    f.show();


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

  15. #15
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    نقل قول نوشته شده توسط resident مشاهده تاپیک
    از همه دوستانی که تجربیاتشونو گفتند ممنونم.

    آرژنگ جان مجددا نمونه برنامه هاتونو دیدم. ولی متاسفانه هیچ کدی برای بستن فرم ها ندیدیم.اگه امکان داره کدی رو که استفاده می کنید ، اینجا قرار بدید.
    متشکرم.
    در پست #۲ این توپیک که karaji333 فرستادند اگر لگین را درست وارد نکنید فرم را میبنده.

    نقل قول نوشته شده توسط resident مشاهده تاپیک
    چه لزومی داره ما فرم های فرزند و پدر رو مشخص کنیم؟ اگه این کار رو نکنیم چی میشه؟
    نکیند بِدش فرم فرزند فقط داخل فرم پدریش نمیماند، میشه همجا حرکتش داد

  16. #16
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    روش بهتر برایه استفاده از فرم لگین:
    https://barnamenevis.org/showthread.php?t=94791
    را توصیه میکنم.

  17. #17
    کاربر تازه وارد آواتار Engineer_Yasin
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    خوزستان
    سن
    36
    پست
    38

    Question نقل قول: چند سوال در مورد فرمها

    تشکر بابات راهنمایی

    حالا بهتره موقع تعویض فرم از کدام استفاده کنیم؟
    فکر کنم اگه فرم دوباره قراره استفاده بشه از hide استفاده کنیم بهتره و اگه دیگه در برنامه نمایش داده نمی شه از close . درسته؟

  18. #18
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: چند سوال در مورد فرمها

    نقل قول نوشته شده توسط Engineer_Yasin مشاهده تاپیک
    تشکر بابات راهنمایی

    حالا بهتره موقع تعویض فرم از کدام استفاده کنیم؟
    فکر کنم اگه فرم دوباره قراره استفاده بشه از hide استفاده کنیم بهتره و اگه دیگه در برنامه نمایش داده نمی شه از close . درسته؟
    hide و close که با هم فرق دارند .

    اگه شما یه فرم را hide کنید معلوم نیست که چه وقت قراره به این فرم رجوع کنید و دوباره اونا show کنید . در این صورت این فرم هنوز در حافظه وجود داره و داره از منابع استفاده می کنه . و این راه درستی نیست .

    شما باید با روش درست ( پست 2) یک فرم را به طور کامل از حافظه خارج کنید .

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •