PDA

View Full Version : سوال: متوقف کردن برنامه برای مدتی محدود



miladspeaker
دوشنبه 16 مرداد 1391, 21:27 عصر
سلام به اساتید عزیز.... یه مشکل اساسی دارم ... بینید من در حال نوشتن یه برنامه هستم که شما فرض بفرمایید 20 خط کد داره ... بعد در جایی از برنامه (مثلا خط 10) می خوام از کاربر یوزر و پسورد بگیرم... فقط زمانی که کاربر یوزر و پسورد رو درست وارد کرد 10 خط بعدی اجرا بشه ... چطوری می تونم اجرای برنامه رو تا زمانی که کاربر یوزر و پسورد رو وارد می کنه متوقف کنم؟ :قلب:

the king
دوشنبه 16 مرداد 1391, 21:43 عصر
سلام به اساتید عزیز.... یه مشکل اساسی دارم ... بینید من در حال نوشتن یه برنامه هستم که شما فرض بفرمایید 20 خط کد داره ... بعد در جایی از برنامه (مثلا خط 10) می خوام از کاربر یوزر و پسورد بگیرم... فقط زمانی که کاربر یوزر و پسورد رو درست وارد کرد 10 خط بعدی اجرا بشه ... چطوری می تونم اجرای برنامه رو تا زمانی که کاربر یوزر و پسورد رو وارد می کنه متوقف کنم؟ :قلب:
اگر برای دریافت کردن نام کاربری و رمز عبور فرم دیگری طراحی کرده اید، آن فرم رو ShowDialog کنید، تا زمانی که اون فرم بازه، روال اجرای کد شما بصورت خودکار
متوقف میشه، توی اون فرم باید رمز عبور و نام کاربری رو چک کنید تا فقط زمانی فرم بسته بشه که مقدارشون قابل قبوله. بعد که پنجره بسته شد بقیه کد شما
بصورت خودکار اجرا میشه :

.
.
.
Form2 f2 = new Form2();
f2.ShowDialog();
f2.Dispose();
.
.
.


اما اگر فرم دیگری برای دریافت رمز عبور و نام کاربری ندارید، نباید روال کد متوقف بشه، چون شما اگه اونجا روال برنامه رو متوقف کنید Thread ای
که فرم رو اداره می کنه متوقف کردید، در نتیجه دیگه کاربر نمی تونه توی فرم تون کاری انجام بده.
شما اون 10 خط بعدی رو ببرید جایی که رخداد TextChanged شدن مقدار داخل TextBox های Username و Password فراخوانی میشه.
اول چک کنید که نام کاربری و رمز عبور درسته و بعد اگه درست بود اون 10 خط کد رو اجرا کنید :

private void Form1_Load(object sender, EventArgs e)
{
textBox1.TextChanged += new EventHandler(UsernamePassword_TextChanged);
textBox2.TextChanged += new EventHandler(UsernamePassword_TextChanged);
}

void UsernamePassword_TextChanged(object sender, EventArgs e)
{
if ((textBox1.Text == "username") && (textBox2.Text == "password"))
{
//Your Code
}
}

miladspeaker
دوشنبه 16 مرداد 1391, 22:00 عصر
سلام جناب ... من این چیزی رو که گفتید امتحان کردم اما متاسفانه نشد ... یه نگاهی بندازید :
private void loginToolStripMenuItem_Click(object sender, EventArgs e)
{
groupBox1.Visible = false;
groupBox5.Visible = false;
Form LoginPage = new login();
LoginPage.MdiParent = this;
LoginPage.ShowDialog();
if (sendLoginInfo.activeGroupBox)
{
groupBox5.Visible = true;
groupBox5.Enabled = true;
groupBox1.Visible = true;
groupBox1.Enabled = true;
}
}

خب .. شما ببینید من همین کار رو کردم .. اما ارور می گیرم ....

the king
دوشنبه 16 مرداد 1391, 22:10 عصر
سلام جناب ... من این چیزی رو که گفتید امتحان کردم اما متاسفانه نشد ... یه نگاهی بندازید :
private void loginToolStripMenuItem_Click(object sender, EventArgs e)
{
groupBox1.Visible = false;
groupBox5.Visible = false;
Form LoginPage = new login();
LoginPage.MdiParent = this;
LoginPage.ShowDialog();
if (sendLoginInfo.activeGroupBox)
{
groupBox5.Visible = true;
groupBox5.Enabled = true;
groupBox1.Visible = true;
groupBox1.Enabled = true;
}
}

خب .. شما ببینید من همین کار رو کردم .. اما ارور می گیرم ....

شما فرم تون MDI ئه، فرمی که ShowDialog میشه نباید MdiParent داشته باشه، این کد رو حذف کنید :

LoginPage.MdiParent = this;


وسط باشه بهتره :

Form LoginPage = new login();
LoginPage.StartPosition = FormStartPosition.CenterParent;
LoginPage.ShowDialog(this);