PDA

View Full Version : باز ماندن یک پنجره پس از بست آن



mostafah110
پنج شنبه 07 مرداد 1389, 12:21 عصر
نمي دونم برنامه قضيش چيه كه تو اولين بار وصل شدن به بانك اطلاعاتي پنجره لوگين باز ميمونه و پنجره اصلی را هم باز می کند در صورتی که من گفتم که این را hide کند.

يعني تو اولين استفاده ما دو تا پنجره داريم كه با بستن هر كدوم برنامه هم بسته ميشه
1. پنجره لوگين
2و پنجره اصلي

تو رویداد کلیک دکمه لوگین اینو نوشتم:

private void submitButton_Click(object sender, EventArgs e)
{
staffClass sc = new staffClass();
sc.openConnection();
SqlDataReader sdr = sc.selectStaff(useIDTextBox.Text, passTextBox.Text);
if(sdr.HasRows == true)
{
//specify local dynamic variable that use in another form...............

//.................................................. ......................

mainForm form = new mainForm();
form.enForm = this;
form.Show();
this.Hide();
clearControl();
}
else
{
MessageBox.Show("نام کاربري يا رمز عبور شما اشتباه است. دوباره سعي کنيد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
clearControl();
}
sc.closeConnection();
}

gerdioz
پنج شنبه 07 مرداد 1389, 15:28 عصر
روش درست کد شما :




private void submitButton_Click(object sender, EventArgs e)
{
staffClass sc = new staffClass();
sc.openConnection();
SqlDataReader sdr = sc.selectStaff(useIDTextBox.Text, passTextBox.Text);
if(sdr.HasRows == true)
{
//specify local dynamic variable that use in another form...............

//.................................................. ......................
this.Hide();


mainForm form = new mainForm();
form.enForm = this;
form.Show();

clearControl();
}
else
{
MessageBox.Show("نام کاربري يا رمز عبور شما اشتباه است. دوباره سعي کنيد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
clearControl();
}
sc.closeConnection();
}

اَرژنگ
پنج شنبه 07 مرداد 1389, 16:07 عصر
من نمیدانم این روشهایه اشتبها برایه لگین را از کجا پیدا میکنند.
روشهایه درست ساخت لگین برنامه قبلاً توسط جناب سینا اینجا پست شده بود، روش راحتر که احتیاج به دانستن اینترفیسها را نداشت را هم من فرستاده بودم. ولی نه کسی جستجو میکنه نه کسی لینک به کار موجود اساتید میفرسته.
احتیاجی به هاید کردن برایه فرم لگین وجود ندارد و روش درست پیاده کردن فرم لگین از این کد پیچیده‌ای که فرستاده شد خیلی کمتر و ساده تر است.
یک استادی روش درست برایه اینکار را لینک بده یا هم دوباره پست بده.

اَرژنگ
پنج شنبه 07 مرداد 1389, 16:12 عصر
من نمیدانم این روشهایه اشتبها برایه لگین را از کجا پیدا میکنند.
روشهایه درست ساخت لگین برنامه قبلاً توسط جناب سینا اینجا پست شده بود، روش راحتر که احتیاج به دانستن اینترفیسها را نداشت را هم من فرستاده بودم. ولی نه کسی جستجو میکنه نه کسی لینک به کار موجود اساتید میفرسته.
احتیاجی به هاید کردن برایه فرم لگین وجود ندارد و روش درست پیاده کردن فرم لگین از این کد پیچیده‌ای که فرستاده شد خیلی کمتر و ساده تر است.
یک استادی روش درست برایه اینکار را لینک بده یا هم دوباره پست بده.
به جایه این همه حرف زدن یک لینک بده:
http://barnamenevis.org/forum/showthread.php?t=88552
http://barnamenevis.org/forum/showthread.php?p=802364

Nahid Borna
پنج شنبه 07 مرداد 1389, 17:13 عصر
دوست عزیز فکر می کنم بهتر از کد:

application.Exit ();

استفاده کنی.

FastCode
پنج شنبه 07 مرداد 1389, 17:23 عصر
دوست عزیز فکر می کنم بهتر از کد:

application.Exit ();

استفاده کنی.

اشتباه فکر میکنی.
باید همیشه کدی رو نوشت که scalable باشه.
مثلاُ حالتی رو فرض کن که یه کانکشن TLS یه یه سرور وجود داره و نام کاربران رو از اون گرفتیم تا login رو انجام بدیم. و در صورت چند بار بسته شدن کلاینت سرور IP رو بن میکنه.حالا با این روش به نظرتون سرور IP رو بن نمیکنه؟

mostafah110
جمعه 08 مرداد 1389, 00:58 صبح
من نمیدانم این روشهایه اشتبها برایه لگین را از کجا پیدا میکنند.
روشهایه درست ساخت لگین برنامه قبلاً توسط جناب سینا اینجا پست شده بود، روش راحتر که احتیاج به دانستن اینترفیسها را نداشت را هم من فرستاده بودم. ولی نه کسی جستجو میکنه نه کسی لینک به کار موجود اساتید میفرسته.
احتیاجی به هاید کردن برایه فرم لگین وجود ندارد و روش درست پیاده کردن فرم لگین از این کد پیچیده‌ای که فرستاده شد خیلی کمتر و ساده تر است.
یک استادی روش درست برایه اینکار را لینک بده یا هم دوباره پست بده.

میشه بگید مشکل این کاری که من کردم چیه؟

mostafah110
جمعه 08 مرداد 1389, 01:03 صبح
اشتباه فکر میکنی.
باید همیشه کدی رو نوشت که scalable باشه.
مثلاُ حالتی رو فرض کن که یه کانکشن TLS یه یه سرور وجود داره و نام کاربران رو از اون گرفتیم تا login رو انجام بدیم. و در صورت چند بار بسته شدن کلاینت سرور IP رو بن میکنه.حالا با این روش به نظرتون سرور IP رو بن نمیکنه؟

این جا که ما در webنیستیم که حرف از ip زدید!!:متفکر:

mostafah110
جمعه 08 مرداد 1389, 01:10 صبح
روش درست کد شما :




private void submitButton_Click(object sender, EventArgs e)
{
staffClass sc = new staffClass();
sc.openConnection();
SqlDataReader sdr = sc.selectStaff(useIDTextBox.Text, passTextBox.Text);
if(sdr.HasRows == true)
{
//specify local dynamic variable that use in another form...............

//.................................................. ......................
this.Hide();


mainForm form = new mainForm();
form.enForm = this;
form.Show();

clearControl();
}
else
{
MessageBox.Show("نام کاربري يا رمز عبور شما اشتباه است. دوباره سعي کنيد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
clearControl();
}
sc.closeConnection();
}

پس به نظر شما اول صفحه ام را hide کنم و بعدش بانک را فراخوانی کنم، آره راست میگید، این طوری درسته...
ممنون

اَرژنگ
جمعه 08 مرداد 1389, 04:19 صبح
میشه بگید مشکل این کاری که من کردم چیه؟
استفاده از چیزهایی که نیاز نیست.
در یکی از همان لینکها یک مثال پیدا میکنید که اگر فرم لگین درست بود برنامه ادامه پیدا میکنه و فرم لگین بسته میشه و از حافظه میاد بیرون، چونکه دیگر بهش احتیاجی نیست و اگر اشتباه بود برنامه تمام میشد، نداشتن کد منطق برنامه و داتابیس در فرم لگین روش درست است..
به حساب Code Flow درست نمیاد، برنامه‌نویس کنترل کامل بر کار برنامه با کدش دارد، و کنترل برنامه باید با منطقش بخونه. دلیل قایم کردن فرمها این است که برنامه‌نویس قابلیت اعمال کنترل کامل بر برنامه‌اش را ندارد.
در دلفی یک برنامه‌ مثال کامل وجود داشت که ازش روشهایه درست را میشد یادگرفت، منتها در سی‌شارپ این مثالها را نمیشه پیدا کرد، و برنامه‌نویسها را میزارند به امان خدا که راه درست را خودشان پیدا کنند، ولی تعداد روشهایه اشتباه بینهایت بیشتر از روشهایه درست است.

FastCode
جمعه 08 مرداد 1389, 09:07 صبح
این جا که ما در webنیستیم که حرف از ip زدید!!:متفکر:
ربطی به وب نداره.توی LAN هم همین اتفاق میتونه بیافته.
در ضمن بابات اینکه حرف از بن کردن IP زدم معذرت میخوام.
ولی روش درستیه.یکی از دوستام توی امضاش (امضا واقعی رو کاغذ) مینوشت به هیچکس اعتماد نکن.