سلام دوستان
من یه فرم login دارم که اطلاعات کاربر رو میگیره و اگه صحیح باشه بسته میشه اما ایراد اینه که اگه کاربر Alt+F4 بزنه بسته میشه و فرم اصلی رو نشون میده
سلام دوستان
من یه فرم login دارم که اطلاعات کاربر رو میگیره و اگه صحیح باشه بسته میشه اما ایراد اینه که اگه کاربر Alt+F4 بزنه بسته میشه و فرم اصلی رو نشون میده
زمانی که فرم لوگین رو ShowDialog می کنی مقدار خروجیش رو چک کن
اگر DialogResult.Cancel بود از بزنامه خارج شو
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
میشه کد مربوطه رو بنویسید؟
ممنون میشم. باید توی form load بنویسم؟
ببخشید اگه تازه کارم
فکر میکنم بهتر باشه اگه کدی که نوشتید رو اینجا قرار بدید تا دوستان اون رو تصحیح کنند.
...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست
کنترل Button خاصیتی به نام DialogResult دارد که با تنظیم این خاصیت به یکی از مقادیر موجود ، در هنگام کلیک Button مقدار آن به فرم فراخواننده برگشت داده می شود . در صورتی که کاربر کلید ALT+F4 را از صفحه کلید فشار دهد مقدار برگشت داده شده Cancel خواهد بود .
DialogResult dr;
Form2 f=new Form2();
dr = f.ShowDialog();
if (dr == DialogResult.Cancel)
{
Code Here...
}
else
{
Code Here...
}
اگر قصد دارید کاربر امکان بستن فرم login را نداشته باشد از کد زیر استفاده کنید .
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}
ممنون از ezamnejad که کدش رو گذاشتند
در تکمیل صحبتهای دوستان :
یک LoginControl هست که جناب Sinpin زحمتشو کشیدن تمام چیزهایی که لازم هست رو داره و می تونین به دلخواه خودتون امکاناتش رو تغییر بدین (در همین تالار جستجو کنین)
این چند تا کلاس نمونه رو میتونین ببینین که چطور میشه از اون کنترل استفاده کرد
یک فرم برای Login و فراخوانی اون در فرم ، کد مثال این دو فرم رو در قسمت ضمیمه به همراه فایل DLL همون کنترل گذاشتم.
موفق باشید
کدهای قسمت اعتبار سنجی کاربر بر اساس پسورد هش شده و ذخیره Log برنامه نوشته شده مطابق نیاز خود تغییر دهید
آخرین ویرایش به وسیله razavi_university : یک شنبه 08 اردیبهشت 1387 در 02:18 صبح
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
جستجو: login C# forum https://barnamenevis.org/showthread.php?t=94791
آخرین ویرایش به وسیله اَرژنگ : یک شنبه 08 اردیبهشت 1387 در 13:12 عصر
ممنونم با e.cancel=true; حل شد اما یه مشکل جدیدی بوجود اومد
وقتی کاربر رمز رو درست میزنه این دستور رو نوشتم :
this.close()
اما دوباره فرم main لود میشه و صفحه login دوم باز میشه
چیکار کنم؟
آخه توی main فرم form1 لود میشه و توی form1_load نوشتم:
loginform lf=new loginform()
میتونی فرم اصلی رو نشون بدی و بعد فرم لوگین رو ShowDialog کنی. حالا هر زمانی که لوگین بسته بشه فرم اصلیت نشون داده می شه البته باید برای مقدار خروجی فرم لوگین شرط بگذاری تا همون مشکل اول پیش نیاد
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
میشه نمونه کدشو برام بنویسی؟ ممنون میشم
بهترین روش که تا به حال دیدم: https://barnamenevis.org/showpo...15&postcount=8 روش دیگر (به خوبی روش بالا نیست): https://barnamenevis.org/showth...ighlight=login و از این روش پائینتر روشهایه آدامس و چوب اند که در شان برنامه نویس نیستند.
میشه نمونه کدشو برام بنویسی؟ ممنون میشم
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace TestLoginControl
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
LoginForm login = new LoginForm();
if (login.ShowDialog() == DialogResult.OK)
Application.Run(new MainForm());
}
}
}
این کدی است که در برنامه بالا استفاده شده
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
ممنون آقای razavi_university
درست کار کرد اما loginform بسته نمیشه
ممنون آقای razavi_university
درست کار کرد اما loginform بسته نمیشه
مشکل دیگه اینه که یه button گذاشتم توی loginform که اگه کاربر نتونست وارد شه برنامه رم ببنده، توی کلیکش نوشتم: application.exit()
اما این دکمه کار نمیکنه
دقیقا لینکی که دادین به همین مشکل که رسیدن ولش کردن
دوست عزیز شما یکبار لینک اولی که جناب آرژنگ گذاشتند رو ببینین و اجراش کنین مشکلوت حل میشهممنون آقای razavi_university
درست کار کرد اما loginform بسته نمیشه
من هم کد همون رو واستون گذاشتم
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
بسیار ممنون، حوصله تونو سر بردم.
اون لینک خیلی پیچیده بود و چیزی دستگیرم نشد، بهر حال ممنون.
من اطلاعات کاربر و پسورد رو روی SQL ذخیره میکنم
privatevoid button1_Click(object sender, EventArgs e)
{
string username = user.Text;
string password = pass.Text;
string command = "select max(permission) from users where username='" + username + "' and password='" + password+"'";
string Cmname = "select max(name) from users where username='" + username + "' and password='" + password+"'";
string person = "select max(id) from users where username='" + username + "' and password='" + password + "'";
// SQL Query
SqlConnection cnm = newSqlConnection();
general g = newgeneral();
cnm.ConnectionString = g.cnm;
SqlCommand cm = newSqlCommand();
cm.Connection = cnm;
cm.CommandType = CommandType.Text;
cm.CommandText = command;
SqlCommand cn=newSqlCommand();
cn.Connection=cnm;
cn.CommandType=CommandType.Text;
cn.CommandText=Cmname;
SqlCommand cp = newSqlCommand();
cp.Connection = cnm;
cp.CommandType = CommandType.Text;
cp.CommandText = person;
object s;
object n;
object p;
cnm.Open();
s = cm.ExecuteScalar();
n=cn.ExecuteScalar();
p = cp.ExecuteScalar();
cnm.Close();
string value = Convert.ToString(s);
string name= Convert.ToString(n);
string perscode = Convert.ToString(p);
if (value == "")
{
MessageBox.Show("شما مجاز به ورود به سیستم نمی باشید", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
LoginCount = LoginCount + 1;
if (LoginCount == 3)
{
Application.Exit();
}
}
else
{
int permission = Convert.ToInt32(s);
if (permission==1 || permission==2)
{
//MessageBox.Show("دمت گرم رخصت", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
label4.Text = name;
this.Close();
// kode shakhse vared shode ra dar registry mineshanad
int regkey = Convert.ToInt32(perscode);
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\kian\source");
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\kian\source").SetValue("Pers Code", regkey);
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\kian\source").Close();
}
else
{
}
}
}
اولین اشکلاش این است که کدها را با هم قاطی کردید، مثالهایی که بهشان لینک فرستادم با لایه بندی کار میکنند، اگر با این طرز کد نویسی ادامه بدید ، کوچکتین مشکلتان همین مشکلی که باهاش برخوردید خواهد بود. کدها را از هم جدا کنید، به مباحث ۳ لایه برنامه نویسی نگاه بندازید، تمام کد را همینطوری نمیشه پشت یک باتن کلیک گذاشت.
چرا this.close کار نمیکنه؟
من کد دوستمونو بصورت زیر استفاده کردم
staticvoid Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Login login = newLogin();
if (login.ShowDialog() == DialogResult.OK)
{
Application.Run(newPartMain());
}
}
ولی فرم partmain لود نمیشه
یعنی چه اتفاقی باید بیافته که dialogresult.ok در ifدرست باشه؟
كجا از This.close استفاده ميكني كه جواب نميده؟
شايد مقدار OK رو برنميگردوني
من كه دو فرم اصلي كه نياز داشتين رو گذاشتم ديگه كجاش پيچيده بود؟؟اون لینک خیلی پیچیده بود و چیزی دستگیرم نشد، بهر حال ممنون.
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی