PDA

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



نیما حتمی
چهارشنبه 07 فروردین 1392, 16:06 عصر
با سلام
دوستان من وقتی برناممو اجرا میکنم فرم loginباز میشه و کاربر نام کاربری و پسورد و میزنه و وارد برنامه میشه من میخوام وقتی کاربر وارد برنامه شد فرم loginبسته بشه.کدشو نوشتم جواب نمیده اینم کدش


SqlConnection



connect = newSqlConnection();

connect.ConnectionString = Ajans.Properties.
Settings.Default.Connection.ToString();


// connect.ConnectionString = baygani.Properties.Settings.Default.Connection.ToS tring();


try

{

connect.Open();


SqlDataAdapter insert = newSqlDataAdapter("select * from users where username='"+Nameuser.Text +"' And Pass='"+txtProNet2.Text +"'", connect);


DataTable t = newDataTable(); insert.Fill(t);


//FarsiMessageBox.FMessageBox.Show(" " + " " + t.Rows.Count.ToString() + " " + " " + " ", "", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Information);


if (t.Rows.Count > 0)

{


Class1.Username = Nameuser.Text;


// MessageBox.Show(" ", "",MessageBoxButtons.OK);

FarsiMessageBox.
FMessageBox.Show(" ", "",FarsiMessageBox.FMessageBoxButtons.OK ,FarsiMessageBox.FMessageBoxIcons.Information );


Master frminter = newMaster();

frminter.ShowDialog();


this.Close();

}


else

{

FarsiMessageBox.
FMessageBox.Show(" ", "",FarsiMessageBox.FMessageBoxButtons.OK,FarsiMessag eBox.FMessageBoxIcons.Warning );

}

خط this.close اصلا کار نمیکنه
بهترین راه واسه حل این مشکل چیه؟

C#‎_best_Programmer
چهارشنبه 07 فروردین 1392, 16:19 عصر
this.hide();

نیما حتمی
چهارشنبه 07 فروردین 1392, 16:35 عصر
نه اینم جواب نمیده.قبلا امتحان کردم.

veniz2008
چهارشنبه 07 فروردین 1392, 17:23 عصر
سلام.
چندین راه وجود داره. میتونید فرم لاگین رو close کنید و فرم جدید رو در یک ترد جدید run کنید (ولی توصیه نمیکنم چون در بعضی حالات شما رو با مشکل مواجه میکنه).
یه راه میتونه این باشه که فرم2 رو به عنوان فرم والد در نظر بگیرید و در formload فرم 1 (فرم لاگین) رو showdialog کنید. حالا در فرم لاگین اگر کاربر نام کاربری و پسورد رو صححی وارد کرد خاصیت dialogresult رو برابر با Ok قرار بدید و فرم لاگین رو close کنید. حالا در فرم 2 و در فرم لود(در ادمه کدهای قبلی) باید dialogresult رو چک کنید که Ok هست یا نه. اگر نبود فرم والد رو هم می بندید و اگر OK بود که یعنی کاربر درست لاگین کرده.
کدهای زیر مراحل کار رو نشون میده :
رویداد FormLoad فرم2 :

FrmLogin flogin = new FrmLogin();
flogin.ShowDialog();
if (flogin.DialogResult != System.Windows.Forms.DialogResult.OK)
{
this.Close();
}

در فرم لاگین و داخل دکمه اعتبار سنجی اینطور بنویسید:

private void btnLogin_Click(object sender, EventArgs e)
{
//اگر کاربر مجاز بود کدهای زیر رو مینویسید

this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
}

نیما حتمی
چهارشنبه 07 فروردین 1392, 17:40 عصر
دوست عزیز اینکارارو کردم ولی جواب نمیده.خیلی عجیبه که نمیشه

veniz2008
چهارشنبه 07 فروردین 1392, 17:43 عصر
دوست عزیز اینکارارو کردم ولی جواب نمیده.خیلی عجیبه که نمیشه
مطمئن باشید عین کارهایی رو که گفتم انجام ندادید. این چیزی که واستون نوشتم تست شده است.
در فایل program.cs باید فرم2 رو به عنوان فرم والد بنویسید. (فرم لاگین رو به عنوان فرم والد قرار ندید).

jugernaut
چهارشنبه 07 فروردین 1392, 17:52 عصر
سلام

مشکلتون دقیقا با hide کردن چی هست؟

نیما حتمی
چهارشنبه 07 فروردین 1392, 17:56 عصر
مشکل اینه که اصلا تو برنامم closeوhide عمل نمیکنه

نیما حتمی
چهارشنبه 07 فروردین 1392, 18:00 عصر
دوستان من یه فرم لاگین دارم که کاربر اول به بر میخوره موقع اجرا.یوزر و رمز رو میده و دکمه تایید رو میزنه میخوام وقتی تاییدروزد لاگین بسته شه.میخوام ساده ترین راه رو انجام بدم.این کدی که دوستمون نوشت خیلی پیچیدس ولی در هر حال نوشتم ولی عمل نکرد.کسی راه ساده تر میدونه

r_s1389@yahoo.com
چهارشنبه 07 فروردین 1392, 18:00 عصر
خوب شما تو فرم اود فرم اصلی تون این کار را بکنید

jugernaut
چهارشنبه 07 فروردین 1392, 18:02 عصر
میشه هدر های اون صفحه رو ارسال کنید تا بررسی کنیم؟

مثل using system.data

veniz2008
چهارشنبه 07 فروردین 1392, 19:02 عصر
این کدی که دوستمون نوشت خیلی پیچیدس ولی در هر حال نوشتم ولی عمل نکرد.کسی راه ساده تر میدونه
پیچیده؟؟؟
مشکل؟؟؟
عزیز من کجاش مشکله؟. من که خط به خط گفتم چکار کنی و همه کدهاش 7 خط هم نمیشه.
شما کدهای فرم لود مربوط به فرم2 رو بذار + کد های دکمه لاگین + کدهای فایل program.cs
به احتمال خیلی زیاد شما کدها رو اشتباه نوشتی(یا جابه جا نوشتی).

tooraj_azizi_1035
پنج شنبه 08 فروردین 1392, 14:07 عصر
چون شما ShowDialog(); کردید اجرای کد بعد از بستن فرم Master ادامه پیدا میکنه پس this.Close فقط بعد از بسته شدن فرم Master اجرا میشه.

در این لینک در قسمت Remarks گفته:http://msdn.microsoft.com/en-us/library/c7ykbedk.aspx
When this method is called, the code following it is not executed until after the dialog box is closed.