PDA

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



karkol
دوشنبه 29 خرداد 1391, 19:34 عصر
سلام
چه کاری باید انجام بدم وقتی کسی وارد میشه اسمش بیاد پایین صفحه و
تاریخ و ساعت ورودش هم همینطور؟

amirxbest
دوشنبه 29 خرداد 1391, 19:44 عصر
منظورتون تو برنامه خودتون هست یا تو ویندوز....
توضیح بدید تا راهنمایی کنم....

karkol
سه شنبه 30 خرداد 1391, 10:54 صبح
سلام
داخل برنامه سی شارپ که مینویسم باید اسم دانشجو و تاریخ و ساعت ورودش پایین صفحه باشه

ممنون میشم اگه جواب بدین

veniz2008
سه شنبه 30 خرداد 1391, 19:38 عصر
کسی نیست که جواب سوال منو بده؟
به نظر میاد سوالم خیلی ساده باشه و کسانی هم که کمی سی شارپ بلد باشن میتونن جواب بدن.
سوال مشکلی نیست،موقعی که اعتبار سنجی میکنید اگه نام کاربری درست بود اونو داخل یک متغیر ذخیره میکنید و تو فرم مقصد(فرمی که بعد از login نمایش داده میشه)اونو دریافت میکنید،واسه ساعت هم دقیقا به همین صورت،یعنی اگه یوزر درست بود با تابع datetime زمان رو میگیری و ذخیره میکنی و در فرم مقصد ازش استفاده میکنی،موفق باشی.

gilas1368
سه شنبه 30 خرداد 1391, 20:49 عصر
با یه متغیر از نوع Static اسم و ساعت و تاریخ ورود رو ذخیره کنید
بعد در فرم بعدتون اونو نمایش بدید

Y_Safaiee
سه شنبه 30 خرداد 1391, 22:16 عصر
اینم یه سمپل کد برای شما

کد مربوط به program.cs



static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new FrmLogin());
}


public static string username = "";
public static int access;

}




*کد مربوط به فرم ورود




object r = accountsTableAdapter.ReturnAccess(ComboBox1.Text, txt_password.Text);
if (r != null)
{
Program.access = (int)r;
Program.username = ComboBox1.Text;
Frmmain frm = new Frmmain();
this.Hide();
frm.ShowDialog();
}
else
{
MessageBox.Show("نام کاربری یا رمز عبور اشتباه می باشد", "مدیریت برنامه", MessageBoxButtons.OK, MessageBoxIcon.Error);
txt_password.Focus();
txt_password.SelectAll();

}


* کد مربوط به فرم اصلی برنامه

یک statusStrip برای مثال بزارید و بعد روش یک لیبل بسازید(با زدن آیکونه) و اینم کدش



private void Form1_Load(object sender, EventArgs e)
{
lbl_user.Text = Program.username;
}


به همین راحتی

موفق باشید
بایت بایت

karkol
یک شنبه 04 تیر 1391, 00:33 صبح
سلام
من میخواستم این کد هارو داخل برنامم بنویسم ولی چون خیلی مبتدی ام نمیتونم درست مطابق برنامم درش بیارم
میشه واضح تر بگید؟
خیلی بهش احتیاج دارم.

saeidghadiri
جمعه 23 مرداد 1394, 16:27 عصر
سلام
من برنامه لاگینم رو به واسطه LINQ و یک کلاس نوشتم.

حالا میخوام اطلاعات User لاگین کرده رو در یه StatusStrip روی یه Lable نشون بدم.

میشه یه کد Sample برام بزارید! داخل انجمن رو با کیود های مختلف جستجو کردم چیزی پیدا نکردم.

Mahmoud.Afrad
جمعه 23 مرداد 1394, 19:48 عصر
سلام
من برنامه لاگینم رو به واسطه LINQ و یک کلاس نوشتم.

حالا میخوام اطلاعات User لاگین کرده رو در یه StatusStrip روی یه Lable نشون بدم.

میشه یه کد Sample برام بزارید! داخل انجمن رو با کیود های مختلف جستجو کردم چیزی پیدا نکردم.

میتونی از طریق سازنده کلاس ها داده رو منتقل کنی به فرم.

کد دکمه لاگین رو بزار تا راهنمایی کنم.

saeidghadiri
جمعه 23 مرداد 1394, 19:54 عصر
private void btn_Login_Click(object sender, EventArgs e)
{
ErrorLogin();
try
{
string _User = txt_UserName.Text;
string _Pass = txt_PassWrod.Text;

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

this.Close();
else
{

}
}
catch (Exception)
{

}
}


اینم کلاس ClsUsers

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

private static bool Login;
public static bool LOGIN
{
get { return Login; }
set { Login = value; }
}

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

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

if (query.Count() > 0)
{
ClsUser.NAME = query.Single().Name.ToString();
ClsUser.FAMILY = query.Single().Family.ToString();
ClsUser.LOGIN = true;
return true;
}
return false;
}

ناامید
جمعه 23 مرداد 1394, 20:52 عصر
سلام.
شما ابتدا به یک متدی نیاز دارید تا زمان جاری رو بگیره و به صورت فارسی نمایش بده تا از زمان ورود در فرم ها استفاده کنید اینکاررو میتونید با استفاده از کلاس PersionCalender انجام بدید.
نام کاربری رو هم میتونید از همون تکست باکسی که فرد برای وارد کردن نام کاربریش استفاده کرده بگیرید.
روی همه فرم ها یک لیبل به نام lblUserName و یک لیبل به اسم lblDateTime قرار بدید تا نام کاربری و زمان در این لیبلها نمایش بدید.
بعد میتونید به خاصیت text دولیبلی که درست کردید دسترسی پیدا کنید و سپس نام کاربری ، زمان و تاریخ رو قرار بدید.

مثلا من میخوام بعد از اینکه اطلاعات کاربر تایید شد از درون Form1 یک Form2 را صدا کنم و نام کاربری، تاریخ و زمان رو انتقال بدم.


// گرفتن تاریخ و زمان فارسی
private string GetNowDateAndTime()
{
DateTime dt = DateTime.Now;
System.Globalization.PersianCalendar pcalender = new System.Globalization.PersianCalendar();
string strDateAndTime = pcalender.GetYear(dt).ToString("0000") + "/" + pcalender.GetMonth(dt).ToString("00") + "/";
strDateAndTime += pcalender.GetDayOfMonth(dt).ToString("00") + " " + pcalender.GetHour(dt).ToString("00") + ":";
strDateAndTime += pcalender.GetMinute(dt).ToString("00") + ":" + pcalender.GetSecond(dt).ToString("00");
return strDateAndTime;
}


private void button1_Click(object sender, EventArgs e)
{
// این کدها باید بعد از تایید اطلاعات کاربر نوشته شود
Form2 form2 = new Form2();
form2.Controls["lblUserName"].Text = this.txtUserName.Text;
form2.Controls["lblDateTime"].Text = this.GetNowDateAndTime();
form2.ShowDialog();
}

اکنون از Form2 میخوام Form3 رو صدا بزنم و نام کاربری، تاریخ و زمان رو به فرم سه انتقال بدم.



private void btnShowForm3_Click(object sender, EventArgs e)
{
Form3 form3 = new Form3();
form3.Controls["lblUserName"].Text = this.lblUserName.Text ;
form3.Controls["lblDateTime"].Text = this.lblDateTime.Text;
form3.ShowDialog();
}


اگر نام، تاریخ و زمان رو در فرم بعدی میخواید نشون بدید یعنی تنها یک فرم شما میتونید همون کدهایی که در Form1 یک نوشتم رو بنویسد، دو تا لیبل در فرم بعدی درست کنید و تاریخ، زمان و نام رو ارسال کنید(اگر نام دانشجو رو از پایگاه داده میگیرید که به احتمال زیاد اینچنین است نام را به lblUserName ارسال کنید و از تکست باکس نام کاربری استفاده نکنید).

Mahmoud.Afrad
شنبه 24 مرداد 1394, 01:40 صبح
توی این کد مشخص نیست فرمهای دیگر چجوری ساخته میشن.

خوبی LinqToSql و EntityFramework اینه که داده ها رو به صورت شئ در اختیار شما میذاره. به همین دلیل به صورت زیر میتونی کلاست رو بنویسی

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 ArshaDBDataContext();
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;
}


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

if (ClsUsers.LOGIN)
{
toolStripStatusLabel1.Text = ClsUsers.loginUser.Name;
}

saeidghadiri
شنبه 24 مرداد 1394, 09:58 صبح
سلام محمود حاج

خیلی باحال تر شد ایول.

حالا یه کاری من کردم توی Main Form توی StatusBar یه لیبل زدم بعد یه تابع به صورت زیر نوشتم و اونو توی Main_Load فراخونی کردم.

public void UserActivity()
{
if (Classes.ClsUser.LOGIN)
{
lbl_UsersLogin_Status.Text = Classes.ClsUser.loginUser.Name;
}
}

جالبه برام که فقط نام رو اورد و فامیلی رو فراخونی نکرد نمودونم چرا.

DataBase Tbl_Login:

Login_ID
UserName
PassWord
Name
Family
این تیپی زدم نمیدونم چرا نام خانوادگی رو نشان نمیده

saeidghadiri
شنبه 24 مرداد 1394, 11:33 صبح
درستش کردم و فقط یه مشکل فاصله بین دو تا رشته چه جوری میشه ایجاد کرد؟

if (Classes.ClsUser.LOGIN)
{
string Name = Classes.ClsUser.loginUser.Name;
string Family = Classes.ClsUser.loginUser.Family;
lbl_UsersLogin_Status.Text = (Name + Family);
}

الان طبق بالا نام و نام خانوادگی به هم می چسبن.

Mahmoud.Afrad
شنبه 24 مرداد 1394, 22:17 عصر
خب کاراکتر space وسطش اضافه کن:
(Name + ' ' + Family)