بستن فرم و رفتن به یک فرم دیگر در C#

kerberos2023

عضو جدید
با سلام خدمت دوستان عزیز
من یه برنامه دارم که با یک فرم username و password باز میشه
حالا می خوام اگه user و pass درست بود این فرم بسته بشه و فرم برنامه اصلی باز بشه
ولی هر دستوری می نویسم کلاً برنامه بسته میشه
اگه لطف کنین و کدشو واسم بنویسید ممنون میشم.
 

boborahimi

عضو جدید
من خودم اين مشكل را داشتم و با دستوراتي سعي كرده ام كه درقسمت پايين task msneger نوار را نشان ندهد ..
 
آخرین ویرایش توسط مدیر:

turboogle

متخصص برنامه نویسی #C
سلام.
در فرم تائيد اعتبار كاربر در صورتي كه كاربر نام كاربري و كلمه عبور درستي وارد كرد فرم فعلي رو hide و فرم اصلي برنامه رو show كن.
 

mahdi7610

عضو جدید
سلام

روشی که دوستانمون فرمودند روش صحیحی نیست .

به خاطر این که وقتی یک فرم Hide میشه فقط از چشم ما مخفی شده . اما داره از منابع سیستم استفاده می کنه . ( اگه به تسک منجر ویندوز نگاه کنید می بینید که هنوز برنامه فعال هستش )

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

می دونیم که وقتی فرم parent بسته بشه فرم chaild هم بسته خواهد شد و ما نمیتونیم فرم parent را ببندیم و فرم فرزند باز باشه .

و حتما شما هم فرم اولتون فرم logon هست و فرم دوم فرم اصلی برنامه هستش .

نکته اصلی اینجاست که شما باید برعکس این کار را انجام بدید .

یعنی برنامه اصلی شما باید فرم اول باشه و فرم logon شما فرم دوم باشه .

حالا با کد نویسی باید کاری کنید که فرم دوم اول نشون داده بشه و فرم اول دوم نشون داده بشه .

کدنویسی اون هم اسون هست .

موفق باشی .
 
آخرین ویرایش:

kerberos2023

عضو جدید
درخواست جواب

درخواست جواب

سلام

روشی که دوستانمون فرمودند روش صحیحی نیست .

به خاطر این که وقتی یک فرم Hide میشه فقط از چشم ما مخفی شده . اما داره از منابع سیستم استفاده می کنه . ( اگه به تسک منجر ویندوز نگاه کنید می بینید که هنوز برنامه فعال هستش )

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

می دونیم که وقتی فرم parent بسته بشه فرم chaild هم بسته خواهد شد و ما نمیتونیم فرم parent را ببندیم و فرم فرزند باز باشه .

و حتما شما هم فرم اولتون فرم logon هست و فرم دوم فرم اصلی برنامه هستش .

نکته اصلی اینجاست که شما باید برعکس این کار را انجام بدید .

یعنی برنامه اصلی شما باید فرم اول باشه و فرم logon شما فرم دوم باشه .

حالا با کد نویسی باید کاری کنید که فرم دوم اول نشون داده بشه و فرم اول دوم نشون داده بشه .

کدنویسی اون هم اسون هست .

موفق باشی .
سلام
ممنون از راهنماییتون
اگه میشه کدشو واسم بذارین
مثلاً اگه فرم login فرم شماره یک و برنامه اصلی فرم شماره 2 باشه چه دستوراتی رو باید به کار ببریم.
 

PC-ENG

عضو جدید
کد:
private void Form2_Load(object sender, EventArgs e)
        {
            Form1 newfrm = new Form1();
            newfrm.ShowDialog();
        }
 

nargil

عضو جدید
واقعا #C بلدین ؟

واقعا #C بلدین ؟

دوستان لطفا اگه برنامه والش رو هم دارین در #Cبزارین
راهنمایی البت به زبان ویژوالC:victory:
__________________
 

پیوست ها

  • New Wordpad Document.doc
    2 کیلوبایت · بازدیدها: 0
  • New Wordpad Document (2).doc
    1.1 کیلوبایت · بازدیدها: 0

mahdi7610

عضو جدید
کسی نبود یه کد کوجولو واسه ما بذاره؟؟؟؟؟؟؟؟؟؟؟؟؟؟
سلام
دوست عزیز من که روالش را توضیح دادم
شما 2 تا فرم توی محیط ویژوال ایجاد کنید . Form1 و Form2
در حالت عادی Form1 فرم پدر هست و Form2 فرم فرزند هستش . همون طور که می دونید با بسته شدن فرم پدر فرم فرزند هم بسته خواهد شد و برنامه خاتمه خواهد یافت . اما اگه فرم فرزند بسته بشه ، فرم پدر میتونه به کارش ادامه بده .
حالا شما باید فرم logon خودتون را Form2 انتخاب کنید (همون فرم username و password ) و سپس برنامه اصلی خودتون را توی Form1 طراحی کنید .
با این کار Form1 ابتدا نمایش داده و بعد از اون Form2 ( ما نمی خواهیم این اتفاق بیفته )
پس ما باید با کد نویسی کاری کنیم که Form2 ابتدا نمایش داده بشه به خاطر این که Form2 فرم logon ما هست . تا کاربر با زدن username و password در صورت صحیح بودن وارد برنامه اصلی بشه .
حالا برای این که Form2 ابتدا نمایش داده بشه شما باید توی Form1_Load دستور زیر را بنویسید
کد:
Form2 frm = new Form2();
frm.ShowDialog();
حالا شما باید دستور مربوط به وارد کردن درست username و password را توی Form2 وارد کنید تا کاربر در صورتی که پسوورد را درست وارد کرد این فرم بسته بشه و Form1 که برنامه اصلی هست نمایش داده بشه .
مثلا
کد:
 if (txtBox1.Text == "mahdi" && txtBox2.Text == "12345")
            {
                this.Close();
            }
با این کار Form2 کامل بسته خواهد شد و از حافظه خارج خواهد شد به خاطر این که فرم فرزند هست . و سپس Form1 باز خواهد شد و برنامه اصلی اجرا خواهد شد .
امیدوارم کامل متوجه شده باشی
موفق باشی .
 

kerberos2023

عضو جدید
خیلی ممنون از راهنماییتون
آره متوجه شدم و امتحان کردم کار می کنه
 

kerberos2023

عضو جدید
سلام
دوست عزیز من که روالش را توضیح دادم
شما 2 تا فرم توی محیط ویژوال ایجاد کنید . Form1 و Form2
در حالت عادی Form1 فرم پدر هست و Form2 فرم فرزند هستش . همون طور که می دونید با بسته شدن فرم پدر فرم فرزند هم بسته خواهد شد و برنامه خاتمه خواهد یافت . اما اگه فرم فرزند بسته بشه ، فرم پدر میتونه به کارش ادامه بده .
حالا شما باید فرم logon خودتون را Form2 انتخاب کنید (همون فرم username و password ) و سپس برنامه اصلی خودتون را توی Form1 طراحی کنید .
با این کار Form1 ابتدا نمایش داده و بعد از اون Form2 ( ما نمی خواهیم این اتفاق بیفته )
پس ما باید با کد نویسی کاری کنیم که Form2 ابتدا نمایش داده بشه به خاطر این که Form2 فرم logon ما هست . تا کاربر با زدن username و password در صورت صحیح بودن وارد برنامه اصلی بشه .
حالا برای این که Form2 ابتدا نمایش داده بشه شما باید توی Form1_Load دستور زیر را بنویسید
کد:
Form2 frm = new Form2();
frm.ShowDialog();
حالا شما باید دستور مربوط به وارد کردن درست username و password را توی Form2 وارد کنید تا کاربر در صورتی که پسوورد را درست وارد کرد این فرم بسته بشه و Form1 که برنامه اصلی هست نمایش داده بشه .
مثلا
کد:
 if (txtBox1.Text == "mahdi" && txtBox2.Text == "12345")
            {
                this.Close();
            }
با این کار Form2 کامل بسته خواهد شد و از حافظه خارج خواهد شد به خاطر این که فرم فرزند هست . و سپس Form1 باز خواهد شد و برنامه اصلی اجرا خواهد شد .
امیدوارم کامل متوجه شده باشی
موفق باشی .
سلام
این کارو کردم جواب داد ولی وقتی دکمه close ویندوز رو توی فرم login می زنم این فرم بسته میشه و فرم اصلی برنامه باز می شه. اگه بخوایم اینجوری نشه چی؟؟؟ چطوری میشه دکمه close بالای پنجره login رو برداشت؟؟؟؟؟
 

King Paker

عضو جدید
کاربر ممتاز
آقا من موردی که می خواستی رو نوشتم واست آپ کردم، کلا چیزایی که می خوای و داره
یه نگا بنداز اگه سوالی بود بپرس...:gol:
 

پیوست ها

  • Test.rar
    17.9 کیلوبایت · بازدیدها: 0

mahdi7610

عضو جدید
سلام
این کارو کردم جواب داد ولی وقتی دکمه close ویندوز رو توی فرم login می زنم این فرم بسته میشه و فرم اصلی برنامه باز می شه. اگه بخوایم اینجوری نشه چی؟؟؟ چطوری میشه دکمه close بالای پنجره login رو برداشت؟؟؟؟؟
سلام

اکثر کاربران برای اینکه فرم Logon خوشگل در بیاد اصولا دکمه های close و minimize و maximaiz را از بالای فرم حذف می کنند .

برای این کار کافیه توی load مربوط به فرمتون دستور زیر را بنویسید .

کد:
this.ControlBox = false;

با این کار کاربر دیگه مجبوره حتما با زدن پسوورد و یوزرنیم صحیح وارد برنامه اصلی بشه .



موفق باشید .
 
آخرین ویرایش:

mahdi7610

عضو جدید
یه چیز داشت یادم میرفت .

ممکنه بعد از غیر فعال کردن دکمه close بالای فرم بپرسی حالا اگه کاربر نتونه رمز را درست وارد کنه و بخواد کلا بی خیال اجرا کردن برنامه بشه حالا از فرم logon چه طوری خارج بشه .

شما باید یه دکمه خودتون کنار دکمه ok به اسم exit توی فرم طراحی کنید و سپس روی دکمه دوبار کلیک کنید و دستور زیر را برای خارج شدن بهش بدید

کد:
Application.Exit();

با این کار موقع خارج شدن دیگه برنامه اصلی باز نمی شه و حتما باید با زدن پسوورد و یوزر نیم وارد برنامه شد .

امیدوارم دیگه کارت راه افتاده باشه .

موفق باشی .
 

tina.programer

عضو جدید
سلام
دوست عزیز من که روالش را توضیح دادم
شما 2 تا فرم توی محیط ویژوال ایجاد کنید . Form1 و Form2
در حالت عادی Form1 فرم پدر هست و Form2 فرم فرزند هستش . همون طور که می دونید با بسته شدن فرم پدر فرم فرزند هم بسته خواهد شد و برنامه خاتمه خواهد یافت . اما اگه فرم فرزند بسته بشه ، فرم پدر میتونه به کارش ادامه بده .
حالا شما باید فرم logon خودتون را Form2 انتخاب کنید (همون فرم username و password ) و سپس برنامه اصلی خودتون را توی Form1 طراحی کنید .
با این کار Form1 ابتدا نمایش داده و بعد از اون Form2 ( ما نمی خواهیم این اتفاق بیفته )
پس ما باید با کد نویسی کاری کنیم که Form2 ابتدا نمایش داده بشه به خاطر این که Form2 فرم logon ما هست . تا کاربر با زدن username و password در صورت صحیح بودن وارد برنامه اصلی بشه .
حالا برای این که Form2 ابتدا نمایش داده بشه شما باید توی Form1_Load دستور زیر را بنویسید
کد:
Form2 frm = new Form2();
frm.ShowDialog();
حالا شما باید دستور مربوط به وارد کردن درست username و password را توی Form2 وارد کنید تا کاربر در صورتی که پسوورد را درست وارد کرد این فرم بسته بشه و Form1 که برنامه اصلی هست نمایش داده بشه .
مثلا
کد:
 if (txtBox1.Text == "mahdi" && txtBox2.Text == "12345")
            {
                this.Close();
            }
با این کار Form2 کامل بسته خواهد شد و از حافظه خارج خواهد شد به خاطر این که فرم فرزند هست . و سپس Form1 باز خواهد شد و برنامه اصلی اجرا خواهد شد .
امیدوارم کامل متوجه شده باشی
موفق باشی .


موقتی کار میکنه من الان به این مشکل برخوردم همین الگوریتمی که شما دادید استفاده کردم اما باز به ایراد خوردم خوب وقتی فرم دو رو می بندیم و اگه یوزر و پسوورد درست بود بره فرم یک ، چون رو لودش نوشتیم form2 رو نشون بده مجدد میاد رو فرم 2 پس روز از نو روزی از نو

راه حلی دارید واسه این موضوع ؟
 
  • Like
واکنش ها: RIG

RIG

متخصص C#.net
موقتی کار میکنه من الان به این مشکل برخوردم همین الگوریتمی که شما دادید استفاده کردم اما باز به ایراد خوردم خوب وقتی فرم دو رو می بندیم و اگه یوزر و پسوورد درست بود بره فرم یک ، چون رو لودش نوشتیم form2 رو نشون بده مجدد میاد رو فرم 2 پس روز از نو روزی از نو

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

پیوست ها

  • user_pass.zip
    86.9 کیلوبایت · بازدیدها: 0

sabermr

عضو جدید
حذف فرم لاگین از برنامه سی شارپ

حذف فرم لاگین از برنامه سی شارپ

با سلامیه برنامه دارم که میخام فرم لاگینشو حذف کنم.باید چطوری این کار رو انجام بدم.اینم سورس فرم لاگین:namespace ajans{ public partial class form_login : Form { DataView objdv; public form_login() { InitializeComponent(); } private void txtuser_TextChanged(object sender, EventArgs e) { lbluser.Text = ""; lblpass.Text = ""; } private void txtpass_TextChanged(object sender, EventArgs e) { lbluser.Text = ""; lblpass.Text = ""; } private void login_Click(object sender, EventArgs e) { login Login = new login(); objdv = new DataView(Login.SelectAccountLogin().Tables["login"]); lbluser.DataBindings.Clear(); lbluser.DataBindings.Add("text", objdv, "user_name"); lblpass.DataBindings.Clear(); lblpass.DataBindings.Add("text", objdv, "password"); if (lbluser.Text != txtuser.Text || lblpass.Text != txtpass.Text) FarsiMessage.ShowMessageBox("نام کاربری یا رمز عبور اشتباه می باشد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1); else { this.Hide(); form_splash frmSplash = new form_splash(); frmSplash.Show(); } } private void exit_Click(object sender, EventArgs e) { this.Opacity = 1; for (int i = 100; i > 1; i--) { this.Opacity -= 0.01; Application.DoEvents(); } Application.Exit(); } private void txtuser_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { login Login = new login(); objdv = new DataView(Login.SelectAccount(txtuser.Text, txtpass.Text).Tables["login"]); lbluser.DataBindings.Clear(); lbluser.DataBindings.Add("text", objdv, "user_name"); lblpass.DataBindings.Clear(); lblpass.DataBindings.Add("text", objdv, "password"); if (lbluser.Text != txtuser.Text || lblpass.Text != txtpass.Text) FarsiMessage.ShowMessageBox("نام کاربری یا رمز عبور اشتباه می باشد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1); else { form_splash frmSplash = new form_splash(); frmSplash.Show(); this.Hide(); } } } private void txtpass_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13) { login Login = new login(); objdv = new DataView(Login.SelectAccount(txtuser.Text, txtpass.Text).Tables["login"]); lbluser.DataBindings.Clear(); lbluser.DataBindings.Add("text", objdv, "user_name"); lblpass.DataBindings.Clear(); lblpass.DataBindings.Add("text", objdv, "password"); if (lbluser.Text != txtuser.Text || lblpass.Text != txtpass.Text) FarsiMessage.ShowMessageBox("نام کاربری یا رمز عبور اشتباه می باشد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1); else { form_splash frmSplash = new form_splash(); frmSplash.Show(); this.Hide(); } } } private void form_login_Load(object sender, EventArgs e) { } }}
 

siamat

عضو جدید
در رابطه با فرم والد

در رابطه با فرم والد

با کسب اجازه از دوستان و اساتید محترمب
چون سوال خودم بود و یه سرچی کردم و پیداش کردم گفتم شاید برای بقیه هم سوال باشه واسه همین اینجا گذاشتمش
برای تبدیل فرم 2 به فرم والد در program.cs برنامه تون باید این قسمت رو تغییر بدید
کد:
Application.Run(new MainForm());
سلام
دوست عزیز من که روالش را توضیح دادم
شما 2 تا فرم توی محیط ویژوال ایجاد کنید . Form1 و Form2
در حالت عادی Form1 فرم پدر هست و Form2 فرم فرزند هستش . همون طور که می دونید با بسته شدن فرم پدر فرم فرزند هم بسته خواهد شد و برنامه خاتمه خواهد یافت . اما اگه فرم فرزند بسته بشه ، فرم پدر میتونه به کارش ادامه بده .
حالا شما باید فرم logon خودتون را Form2 انتخاب کنید (همون فرم username و password ) و سپس برنامه اصلی خودتون را توی Form1 طراحی کنید .
با این کار Form1 ابتدا نمایش داده و بعد از اون Form2 ( ما نمی خواهیم این اتفاق بیفته )
پس ما باید با کد نویسی کاری کنیم که Form2 ابتدا نمایش داده بشه به خاطر این که Form2 فرم logon ما هست . تا کاربر با زدن username و password در صورت صحیح بودن وارد برنامه اصلی بشه .
حالا برای این که Form2 ابتدا نمایش داده بشه شما باید توی Form1_Load دستور زیر را بنویسید
کد:
Form2 frm = new Form2();
frm.ShowDialog();
حالا شما باید دستور مربوط به وارد کردن درست username و password را توی Form2 وارد کنید تا کاربر در صورتی که پسوورد را درست وارد کرد این فرم بسته بشه و Form1 که برنامه اصلی هست نمایش داده بشه .
مثلا
کد:
 if (txtBox1.Text == "mahdi" && txtBox2.Text == "12345")
            {
                this.Close();
            }
با این کار Form2 کامل بسته خواهد شد و از حافظه خارج خواهد شد به خاطر این که فرم فرزند هست . و سپس Form1 باز خواهد شد و برنامه اصلی اجرا خواهد شد .
امیدوارم کامل متوجه شده باشی
موفق باشی .
 

naeyrin

عضو جدید
باسلام به دوستان
یک پروژه با چندین فرم دارم فرم1 فرم اصلی که همه فرمها با انتخاب این فرم باز می شود اگر فرم 1 را ببنیدم همه فرمها بسته می شود ولی اگر فرم دیگر را که باز کردیم را نبندیم و روی فرم اصلی کلیک کنیم اون فرم به زیر فرم اصلی میرود وبسته نمی شود یک راه حل برای این موضوع می خواهم که هر وقت به فرم اصلی بروم تمام فرم های دیگر که زیر مجموعه این فرم هستن بطور اتومات بسته شود. سورس برنامه سی شارپ
 

RIG

متخصص C#.net
باسلام به دوستان
یک پروژه با چندین فرم دارم فرم1 فرم اصلی که همه فرمها با انتخاب این فرم باز می شود اگر فرم 1 را ببنیدم همه فرمها بسته می شود ولی اگر فرم دیگر را که باز کردیم را نبندیم و روی فرم اصلی کلیک کنیم اون فرم به زیر فرم اصلی میرود وبسته نمی شود یک راه حل برای این موضوع می خواهم که هر وقت به فرم اصلی بروم تمام فرم های دیگر که زیر مجموعه این فرم هستن بطور اتومات بسته شود. سورس برنامه سی شارپ
من نفهمیدم چی میخاین دقیقا! اگه میخای با کلیک کردن رو فرم 1 تمامی فر مهای دیگر بسته بشن میتونی در رویداد کلیک فرم 1 فر مهای دیگر رو چک کنی و ببندی.
 

Similar threads

بالا