PDA

View Full Version : علت ورود به فرم اصلی برنامه بدون اینکه لاگین صورت بگیره ؟



saeidghadiri
دوشنبه 16 شهریور 1394, 10:52 صبح
سلام
من تو فرم لاگینم چند تا مشکل دارم:

1- زمانی که برنامه اجرا می شود فرم لاگین ظاهر می شود، بدون اینکه حتی عملی انجام دهیم Alt+F4 را بزنم برنامه بسته نمی شود و وارد فرم اصلی می شود.
2- من برای txtbox( username, password) errorprovider گذاشتم درست هم عمل میکنه ولی اگر کاربر User , pass اشتباه وارد کنه آلارم نمیده این نام کاربری و رمز اشتباه است. msgbox رو کجا باید بگزارم که چک کند.

محمد آشتیانی
دوشنبه 16 شهریور 1394, 11:32 صبح
سلام
دوست گرامی ، کدتون رو اینجا قرار بدید لطفا

saeidghadiri
دوشنبه 16 شهریور 1394, 14:17 عصر
ممنون مدیر ارشد


private void btn_Login_Click(object sender, EventArgs e)
{
ErrorLogin();
try
{
string _User = txt_UserName.Text;
string _Pass = txt_PassWord.Text;

if (Classes.ClsUser.CheckLogin(_User, _Pass) == true)

this.Close();
else
{

}

}
catch (Exception)
{

}
}
public bool ErrorLogin()
{
errorProvider1.Clear();
bool shart = false;
if (txt_UserName.Text.Trim() == "")
{
errorProvider1.SetError(txt_UserName, "لطفا نام كاربري را وارد نماييد");
txt_UserName.Focus();
}
else if (txt_PassWord.Text.Trim() == "")
{
errorProvider1.SetError(txt_PassWord, "لطفا رمز عبور را وارد نماييد");
txt_PassWord.Focus();
}
else
{
// DialogResult res = FMessegeBox.FarsiMessegeBox.Show("نام كاربري و رمز عبور را اشتباه وارد كرده ايد!", "خطای ورود به سیستم", FMessegeBoxButtons.Ok, FMessegeBoxIcons.Exclamtion);

shart = true;

}
return shart;
}


//class clsuser

class ClsUser
{
private static string Username;
public static string USERNAME
{
get { return Username; }
set { Username = value; }
}

private static string Name;
public static string NAME
{
get { return Name; }
set { Name = value; }
}

private static string Family;
public static string FAMILY
{
get { return Family; }
set { Family = value; }
}

public static Tbl_Login loginUser { get; private set; }
public static bool LOGIN { get; private set; }

public static bool CheckLogin(String _Username, string _PassWord)
{
var db = new BehranDBDataContext();
var query = db.Tbl_Logins.SingleOrDefault(x => x.UserName == _Username && x.PassWord == _PassWord);

if (query != null)
{
loginUser = query;
LOGIN = true;
}
else
{
LOGIN = false;
}
return LOGIN;
}




لطفا راهنمایی نمایید.

davidrobert
دوشنبه 23 شهریور 1394, 09:06 صبح
بفرمائید این دستور لاگین کردن به برنامه void LoginSystem()
{
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedDataBytes;
UTF8Encoding encoder = new UTF8Encoding();
string StrPassWord = txtpass.Text;
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(StrPassWord ));
var q =
db.View_Login_User.Where(e => e.U_User_Name == txtuser.Text && e.U_PassWord == hashedDataBytes);
if (txtpass.Text != "" && txtuser.Text != "")
{
if (q.Count() != 0)
{
Program.User = txtuser.Text.ToString();
this.Hide();
Frm_Main fm = new Frm_Main();
fm.ShowDialog();
}
else
{
MessageBoxShow.Show("چنین نام کاربری یافت نشود؟", "خطا", MessageBoxShow.Buttons.OK, MessageBoxShow.Icons.Error);
txtuser.Text = "";
txtpass.Text = "";
}
}
else
{
MessageBoxShow.Show("نام کاربری یا رمز عبور را وارد فرمایید؟", "خطا", MessageBoxShow.Buttons.OK, MessageBoxShow.Icons.Error);
}
}
private void BtnLogin_Click(object sender, EventArgs e)
{
LoginSystem();
}

private void ورودToolStripMenuItem_Click(object sender, EventArgs e)
{
LoginSystem();
}

saeidghadiri
دوشنبه 23 شهریور 1394, 09:27 صبح
سلام ممنون

میخوام بدونم ایراد کد خودم کجاست که بتونم حرفه ای ترش کنم نمی خوام هی کپی کنم

ژیار رحیمی
دوشنبه 23 شهریور 1394, 09:33 صبح
دوست گرامی کد های رویداد فرم لود خود را بزارید(باید کدهای این رویداد بررسی بشه)

shaho.khedri
دوشنبه 23 شهریور 1394, 19:22 عصر
فک کنم شما توی فرم اصلیتون ابتدا فرم لاگین رو فراخوانی کردین که کاربر توش لاگین کنه و وقتی میبندتش فرم زیرش که همون فرم اصلیتونه ظاهر میشه
شما باید کاری کنید که ابتدا فرم لاگینتون ظاهر بشه
مثل مشکلی که من مدتی قبل داشتم:
لینک در اینجا (http://barnamenevis.org/showthread.php?505816-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D8%B1%D9%85-%D9%84%D8%A7%DA%AF%DB%8C%D9%86-%D8%A8%D9%87-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A2%D9%85%D8%A7%D8%AF%D9%87&p=2256140#post2256140)

saeidghadiri
دوشنبه 06 مهر 1394, 10:04 صبح
فک کنم شما توی فرم اصلیتون ابتدا فرم لاگین رو فراخوانی کردین که کاربر توش لاگین کنه و وقتی میبندتش فرم زیرش که همون فرم اصلیتونه ظاهر میشه
شما باید کاری کنید که ابتدا فرم لاگینتون ظاهر بشه
مثل مشکلی که من مدتی قبل داشتم:
لینک در اینجا (http://barnamenevis.org/showthread.php?505816-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D8%B1%D9%85-%D9%84%D8%A7%DA%AF%DB%8C%D9%86-%D8%A8%D9%87-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A2%D9%85%D8%A7%D8%AF%D9%87&p=2256140#post2256140)

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

کد Main Form زمان Load:
try
{

//Classes.ClsUser.LOGIN = false;
Forms.Login obj = new Forms.Login();
obj.ShowDialog();

if (Classes.ClsUser.LOGIN == false)
{
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

saeidghadiri
دوشنبه 06 مهر 1394, 10:36 صبح
دوست گرامی کد های رویداد فرم لود خود را بزارید(باید کدهای این رویداد بررسی بشه)

سلام من توی فرم اصلی :

private void MainForm_Load(object sender, EventArgs e)
{
# region Form Load
// System.Diagnostics.Process.Start("http://google.com/");
try
{

//Classes.ClsUser.LOGIN = false;
Forms.Login obj = new Forms.Login();
obj.ShowDialog();

if (Classes.ClsUser.LOGIN == false)
{
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

# endregion
}

حالا کد لاگین بالا این همه تغییرش دادم باز درست نشد نمیدونم چرا. از Event استفاده نکردم در فرم اصلی. ولی در فرم لاگین برای اینکه Errprovider رو بعد از وارد کردن نام کاربری و رمز عبور نشون نده err.clear استفاده کردم همین.
اگه منظورتون رو بد فهمیدم توضیح بدید کد رو بزارم

saeidghadiri
شنبه 11 مهر 1394, 07:24 صبح
میشه دوستان راهنمایی کنند؟ من یه متد فراخونی کردم و txtbox ها رو گفتم اگه خالی نبود True کن ولی خروجیش رو بررسی نکردم کجا باید خروجی رو بررسی کنم و چه جوری؟ ممنون میشم کمک کنید مشکلم رو بفهمم

Arman_1367
شنبه 11 مهر 1394, 14:18 عصر
if(Classes.ClsUser.LOGIN == false) {
return;
}

این قسمت ایراد داره کافیه به جای return کردن فرم را ببندی یا اینکه برنامه را ترمینیت کنی.

if (Classes.ClsUser.LOGIN == false)
{
Application.Exit();
}


اما روش کاری شما غلط است بهتره نتیجه دیالوگ رو جک کنی اگر مثلاً اوکی نبود برنامه بسته بشه.

ژیار رحیمی
شنبه 11 مهر 1394, 15:47 عصر
private void MainForm_Load(object sender, EventArgs e)
{
var obj = new Forms.Login();
if (obj.ShowDialog() == DialogResult.Cancel)
return;
}


تو فرم لاگین هر وقت یوزر و پسورد درست بود

DialogResult = DialogResult.OK;


در غیر اینصورت

DialogResult =DialogResult.Cancel;

Arman_1367
شنبه 11 مهر 1394, 17:50 عصر
private void MainForm_Load(object sender, EventArgs e)
{
var obj = new Forms.Login();
if (obj.ShowDialog() == DialogResult.Cancel)
return;
}


تو فرم لاگین هر وقت یوزر و پسورد درست بود

DialogResult = DialogResult.OK;


در غیر اینصورت

DialogResult =DialogResult.Cancel;


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

saeidghadiri
دوشنبه 20 مهر 1394, 07:25 صبح
سلام راهکار درستش که کاربر هم اذیت نشه چیه؟
چطوری شرط ایجاد کنم با دیالوگ؟