PDA

View Full Version : سوال: باز شدن دوباره فرم بعد از عوض کردن نام کاربری و رمز عبور



forodo
شنبه 20 مهر 1392, 19:40 عصر
سلام
وقتی برنامه رو باز می کنم نام کاربری و رمز عبور رو باید وارد کنم.
وقتی وارد برنامه می شم و با یه پنجره ای که درست کردم می خوام نام کاربری و رمز عبورم رو تغییر بدم ولی وقتی که این کار رو می کنم فرم قبلی باید بسته بشه ولی همچین اتفاقی نمی افته و دوباره یک فرم دیگر باز می شود ( یعنی همان پرنت فرم ).
اگر 10 باز نام کاربری و رمز عبور رو تغییر بدم 10 تا پرنت فرم برام باز می کنه.
چطور می تونم قبلی رو ببندم؟

behzadkhatari
شنبه 20 مهر 1392, 19:45 عصر
با بستن فرم پرنت کل برنامه بسته میشه. شما نباید از فرم پرنت new کنی میتونی اونو hide کنی و دوباره show کنی

forodo
شنبه 20 مهر 1392, 20:35 عصر
با بستن فرم پرنت کل برنامه بسته میشه. شما نباید از فرم پرنت new کنی میتونی اونو hide کنی و دوباره show کنی
چطوری باید این کار رو انجام بدم؟
کدش چیه؟؟؟
اگه منظور شما اینه که ایراد می گیره:

MdiParent.Hide();
MdiParent.ShowDialog();

اررورش اینه:

Object reference not set to an instance of an object.

forodo
شنبه 20 مهر 1392, 22:04 عصر
لطفاً راهنمایی کنید.

Kubuntu
شنبه 20 مهر 1392, 22:12 عصر
private void btnSwitchUsr_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));

t.Start();
this.Close();
}

public static void ThreadProc()
{

Application.Run(new frmLogin ());

}
btnSwitchUsr در فرمی که می خای بسته بشه قرار داره.
frmLogin فرمی که یوزر و پسورد می گیره

forodo
یک شنبه 21 مهر 1392, 07:35 صبح
private void btnSwitchUsr_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));

t.Start();
this.Close();
}

public static void ThreadProc()
{

Application.Run(new frmLogin ());

}
btnSwitchUsr در فرمی که می خای بسته بشه قرار داره.
frmLogin فرمی که یوزر و پسورد می گیره
اون رویداد دکمه رو به این شکل تغییر دادم:

private void changeToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(frmTaghireKaarbar.Thr eadProc));
t.Start();
this.Close();
}

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

راستی اون تابع pubkic رو در خود پرنت فرم هم که گذاشتم جواب داد یعنی همان فرمی که رویداد کلیک شما رو در اونجا نوشته بودم.

Kubuntu
یک شنبه 21 مهر 1392, 13:45 عصر
نیاز به این نیست که کد رو تغییر بدی. اگه از عین کد استفاده کنی این مشکلات رو هم نداری.

تازه کافیه شما یوزر و پسورد جاری رو در متغیری ذخیره کنی و وقتی کاربر انصراف رو زد ازش استفاده کنی.

forodo
یک شنبه 21 مهر 1392, 16:42 عصر
یه کار دیگه ای کردم.
وقتی که تغییر کاربر رو می زنه به جای اینکه پنجره تغییر نام کاربری و رمزعبور باز بشه کد زیر رو نوشتم:

Application.Restart();

اینجوری برنامه از اول باز می شه و کاربر می تونه نام کاربری و رمزعبورش رو هم بزنه.