PDA

View Full Version : انتخاب یک فرم برای نمایش جهت اولین پنجره



f_naderi
جمعه 20 خرداد 1390, 09:02 صبح
سلام
من برنامم رو نوشتم حالا می خوام یک پنجره دیگه اول برای برنامه ام باز بشه و یوزرنیم و پسورد بگیره اگه درست بود بره به یک پنجره دیگه و درون اون پنجره با زدن دکمه ورود به برنامه اصلی وارد بشه
حالا چکار کنم که اون پنجره لاگین اول نمایش داده بشه و بعد بقیه پنجره ها

JaguarXF
جمعه 20 خرداد 1390, 09:18 صبح
روش چرند که زیاد هست که کار کنه!

اما فکر کن خواستی ماه آینده یک برنامه دیگر هم بنویسی و باز هم به همین فرم لاگین احتیاج داشتی. با تا آخر عمرت به این فرم لاگین احتیاج داشتی در تمام برنامه هایی که در عمرت مینویسی.
بهتر نیست در یک DLL مجزا کلا این فرم و منطق مربوط به لاگین رو قرار بدهی احتمالا؟

f_naderi
جمعه 20 خرداد 1390, 09:29 صبح
من نیاز خیلی فوری دارم و باید برنامه رو زود تر تحویل بدم میشه یکی از اون روش ها رو بفرمایید

bazardeh
جمعه 20 خرداد 1390, 10:08 صبح
در برنامه پیش فرم هایی که ساختی فایلی ای است به نام Program.cs و داخل آن کد زیر رو تغییر بده



Application.Run(new Form1());


به جای مثلا فرم 1 ت اگر بود فرم لاگین اسمشو بزار مثلا



Application.Run(new frmlogin());

f_naderi
جمعه 20 خرداد 1390, 10:32 صبح
ممنون حالا فرم لاگین نمایش داده میشه ، توی این پنجره من دوتا تکست باکس قرار دادم که بیاد نام کاربری و رمز عبور رو چک کنه اگه درست بود پنجره mainform رو باز کنه و پنجره لاگین رو ببنده در غیر اینصورت یک پیام رو نمایش بده ولی دکمه ورود رو که می زنم پنجره بسته میشه ولی پنجره mainform نمایش داده نمی شه

bazardeh
جمعه 20 خرداد 1390, 10:35 صبح
اگه مقدوره برات کد تو بزار تا بهتر کمکت کنیم

فرم mainform رو show می کنی

f_naderi
جمعه 20 خرداد 1390, 10:40 صبح
حجمش خیلی زیاده
کد رو به این تغییر دادم ولی حالا پنجره لاگین رو نمی بنده

ds.Clear();
ds.Tables.Clear();
con.Open();
string str = "select us_name,pass from login";
da = new OleDbDataAdapter(str,con);
da.Fill(ds);
con.Close();
if (ds.Tables[0].Rows[0][0].ToString() == textBox1.Text.Trim() && ds.Tables[0].Rows[0][1].ToString() == textBox2.Text.Trim())
{
mainform m_f = new mainform();
login lg = new login();
m_f.Show();
lg.Close();

}
else MessageBox.Show(" ");

haghft
جمعه 20 خرداد 1390, 10:51 صبح
یه نکته ایی رو بگم شما اگه برنامتون رو با هر فرمی که در program.cs به عنوان آغازکننده معرفی کنید اون فرم اصل برنامه محسوب میشه و اگر بسته بشه کلا از برنامه میاد بیرون پس شما نمیتونید از کد close(); استفاده کنید ولی میتونید از کد hide(); استفاده کنید یا یه کار دیگه کنید فرم اصلیتون مخفی باشه یا به یه لوکیشنی که پیدا نیست بره مثلا 10000و10000 بعد تو لودش فرم لاگین ظاهر بشه و بعد از تایید صحت فرم لاگین بسته بشه و فرم اصلی بیاد سر جاش.

f_naderi
جمعه 20 خرداد 1390, 10:58 صبح
از hide استفاده کردم ولی با بستن پنجره بعدی که باز میشه فرم لاگین مخفی شده بسته نمی شه و برنامه هنوز در حال اجرا است

bazardeh
جمعه 20 خرداد 1390, 11:08 صبح
اگر می خواهید برنامه شما به طور کامل بسته بشه از کد زیر استفاده کنید


try
{
Application.Exit();
}
catch (Exception e1)
{
MessageBox.Show(""+e1.Message,"خطا");
}

saeed-kh
جمعه 20 خرداد 1390, 11:39 صبح
سلام دوست عزیز
فکر کنم روشی که من برات بگم قشنگتر باشه.
1-شما فرم اصلیت رو باز کن اما توی Form.load Event فرم لاگینت رو showdialog() کن. اگه درست وارد شد که فرم لاگین رو ببند تا فرم اصلی نمایش داده بشه وگرنه کافیه فرم اصلی رو ببندی یا کلا Application.Exit()رو استفاده کنی

private void MDIP_Shown(object sender, EventArgs e)
{
LogOn log = new LogOn(false);
if (log.ShowDialog() == DialogResult.OK && log._Validation)
{
this.Text ="پیتزا آپادانا : "+ Program.UserName;

}
else
Application.Exit();

InputLanguage PersionLanguage;

foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
if (lang.Culture.EnglishName == "Persian (Iran)")
{
PersionLanguage = lang;
InputLanguage.CurrentInputLanguage = PersionLanguage;
System.Threading.Thread.CurrentThread.CurrentCultu re = lang.Culture;
}
}
}

فرم log فرم لاگین هست و این فرم یک پراپرتی با نام _Validation داره که صحت یوزر و رمز رو برمیگردونه

jigily
جمعه 20 خرداد 1390, 18:26 عصر
بايد ابتدا program را به اين صورت كه ميگم تغيير بدي ...

public static Form1 firstpage = new Form1();/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
firstpage.ShowDialog();
}

بجاي form1 بايد اون فرم لاگين كه اول ميخواي اجرا بشه بزاري ..
بعد توي فرم لاگين ميگي اگه كاربر درست وارد كرد وارد فرم ديگه شو به اين صورت

this.close()

this.dispose()

form2 f2=new form2();

f2.showdialog()

اينطوري فرم لاگين بسته ميشه براي همه فرم ها ميتوني اين كار بكني...