PDA

View Full Version : مشکل Focus در Textbox به هنگام استفاده از Thread



imanx7
پنج شنبه 31 اردیبهشت 1394, 16:30 عصر
سلام من یک کلاس لاگین نوشتم با تابع لاگین به وسیله تکنولوژی لینک !
به صورت معمول برای بررسی نام کاربری و رمز عبور برنامه برای 2 و 3 ثانیه قفل میشه تا بررسی انجام بشه در صورتی که بنده با ADO.net همچین مشکلی رو نداشتم
حالا برای حل این مشکل اومد از Thread استفاده کردم اما بعضی از دستورات در تابع اجرا نمیشه مثل دستور Focus !
کد بنده به این شکله :


public class ClsLogin
{
int intErrLogin = 0;


public void Login(TextBox txtUser, TextBox txtPass, Form frmLogin)
{
Control.CheckForIllegalCrossThreadCalls = false;
dbDataContext _dbDataContext = new dbDataContext();
var Query = _dbDataContext.tblusers.Where(C =>
C.user.ToLower() == txtUser.Text.ToLower()
&&
C.pass.ToLower() == txtPass.Text.ToLower()
);
if (intErrLogin <= 3)
{
if (Query.Count() != 0)
{
ClsTrans.StrStaticUser = txtUser.Text.ToLower();
ClsTrans.StrStaticPass = txtPass.Text.ToLower();
ClsTrans.IsAdmin = Convert.ToBoolean(Query.Single().IsAdmin);
frmLogin.Hide(); frmLogin.WindowState = FormWindowState.Minimized;
//Show Main Form
}
else
{
intErrLogin++;
string strMsg = "نام کاربری یا رمز عبور اشتباه است ، لطفا دوباره تلاش کنید";
MessageBox.Show(strMsg, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtUser.ResetText(); txtPass.ResetText(); txtUser.Focus();
}
}
else
{
Application.Exit();
}
}
}



ClsLogin _ClsLogin = new ClsLogin();
private void btnEnter(object sender, EventArgs e)
{
Thread _th = new Thread(c => _ClsLogin.Login(textBox1, textBox2, this));
_th.Start();

}