PDA

View Full Version : سوال: قفل شدن فرم MDI پدر هنگام باز شدن MDI فرزند



hamedjonjon
یک شنبه 22 مرداد 1391, 13:27 عصر
با سلام
می خواستم یک فرم ورود به نرم افزار(MDI فرزند) داشته باشم که تا وقتی که کاربر نام کاربری و رمز ورود اش رو در اون وارد نکرده نتونه به هیچ بخش نرم افزار(فرم MDI پدر) دسترسی داشته باشه
البته می خوام که MDI پدر دیده بشود اما وقتی که در هر بخشی از اون کلیک میکنی با یک صدای خطا کاربر متوجه کنه که باید ابتدا نام کاربری و رمز عبور رو در فرم ورود وارد کنه

با تشکر از شما که کمک میکنید...

hamedjonjon
سه شنبه 24 مرداد 1391, 14:28 عصر
یه با مرام پیدا بشه کمک کنه دیگه

hakim22
سه شنبه 24 مرداد 1391, 15:00 عصر
در Application Startup برنامه فرم رو new کنید و نمایش بدید.

hamedjonjon
سه شنبه 24 مرداد 1391, 15:02 عصر
میشه بیشتر توضیح بدید
ممنون میشم

rezayeman
سه شنبه 24 مرداد 1391, 15:23 عصر
با سلام
می خواستم یک فرم ورود به نرم افزار(MDI فرزند) داشته باشم که تا وقتی که کاربر نام کاربری و رمز ورود اش رو در اون وارد نکرده نتونه به هیچ بخش نرم افزار(فرم MDI پدر) دسترسی داشته باشه
البته می خوام که MDI پدر دیده بشود اما وقتی که در هر بخشی از اون کلیک میکنی با یک صدای خطا کاربر متوجه کنه که باید ابتدا نام کاربری و رمز عبور رو در فرم ورود وارد کنه

با تشکر از شما که کمک میکنید...

سلام

شما خیلی راحت می تونی با کد نویسی در رویداد Leave مربوط به فرم login این کار رو انجام بدی

private void Form2_Leave(object sender, EventArgs e)
{
Form2 f = new Form2();
MessageBox.Show("نام کاربری و پسورد را وارد نمائید");
txtUserName.Focus();
}

hamedjonjon
سه شنبه 24 مرداد 1391, 15:43 عصر
فکر میکنم منظور من رو درست متوجه نشدید!
برای مثال اگه از مرورگر Opera استفاده می کنید، در صورتی که به Setting-> Preferences بروید و حال بخواهید بدون بستن Preferences بر روی قسمتی از برنامه Opera کلیک کنید، این کار امکان پذیر نخواهد بود و با هر بار کلیک بر روی خود نرم افزار( مثلا یکی از تب ها) هم صدایی(دینگی!) پخش می شود و هم رنگ Preferences چند باری تغییر میکند
یا اگر از Internet Explorer استفاده می کنید، عینا هم اتفاق با باز کردن Internet Option و کلیک بر بروی خود نرم افزار Internet Explorer (مثلا یکی از تب های باز) می افتد
http://upload.iranvij.ir/image_mordad91/92653317083504561126_thumb.jpg (http://upload.iranvij.ir/viewer.php?file=92653317083504561126.jpg)

Mahmoud.Afrad
سه شنبه 24 مرداد 1391, 16:26 عصر
بهتره فرم لاگین را به تنهایی نشون بدی اگر کاربر مورد تایید بود فرم اصلی را نشون بده وگرنه برنامه رو ببند.

hamedjonjon
چهارشنبه 25 مرداد 1391, 01:10 صبح
یعنی منظور شما اینه که این طرحی که من گفتم قابل انجام نیست؟

ya30ien2
چهارشنبه 25 مرداد 1391, 04:03 صبح
منم فکر میکنم بهتر باشه اول فرم گرفتن نام کاربری رو نمایش بدی اینجوری امنیت بالاتر هستش
و برای سطح دسترسی هم شما حتما یک فرم درون بانک اطلاعات دارید که مثلا تعریف کاربر جدید رو برای این کاربر برابر فالس قرار میدید
تمامی سطح دسترسی ها رو از بانک بخونید و اگه فعال بود برابر 1 در غیر این صورت برابر 0 قرار بدید همه رو داخل یک مثلا لیبل قرار بدید و از لیبل بخونید
یعنی زیباترش اینه که کلیدهاتون فعال باشه اما در کدنویسی کلید برای نمایش فرم از شرط استفاده کنید مثلا حرف 5 لیبل برابر چی هستش اگه 1 فرم نمایش داده بشه اگه 0 پیغام بده
امیدوارم متوجه شده باشی

hamedjonjon
چهارشنبه 25 مرداد 1391, 04:18 صبح
منم فکر میکنم بهتر باشه اول فرم گرفتن نام کاربری رو نمایش بدی اینجوری امنیت بالاتر هستش
و برای سطح دسترسی هم شما حتما یک فرم درون بانک اطلاعات دارید که مثلا تعریف کاربر جدید رو برای این کاربر برابر فالس قرار میدید
تمامی سطح دسترسی ها رو از بانک بخونید و اگه فعال بود برابر 1 در غیر این صورت برابر 0 قرار بدید همه رو داخل یک مثلا لیبل قرار بدید و از لیبل بخونید
یعنی زیباترش اینه که کلیدهاتون فعال باشه اما در کدنویسی کلید برای نمایش فرم از شرط استفاده کنید مثلا حرف 5 لیبل برابر چی هستش اگه 1 فرم نمایش داده بشه اگه 0 پیغام بده
امیدوارم متوجه شده باشی

فکر کنم خوابتون میومده...(ساعت 4:33 صبح)
آخه چه ربطی داشت!!!
به هر حال ممنون

asadegha
چهارشنبه 25 مرداد 1391, 04:49 صبح
در مثالی که شما از IE زدی، فرم Internet options یک فرم MDI نیست. بلکه به صورت مجزا و با متد ShowDialog() باز شده.

asadegha
چهارشنبه 25 مرداد 1391, 05:22 صبح
در ضمن اگه خیلی اصرار داری که حتما فرم MDI به اون صورت باز بشه میتونی بصورت زیر عمل کنی، ولی اصلا توصیه نمیشه:

در Form1 داریم:

Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();



در Form2 هم داریم:

private void Form2_Load(object sender, EventArgs e)
{

foreach (Control item in this.MdiParent.Controls)
{
if (item.Name != "Form2" && item.Name != "")
item.Enabled = false;
}

}

private void Form2_Leave(object sender, EventArgs e)
{

foreach (Control item in this.MdiParent.Controls)
{
if (item.Name != "Form2" && item.Name != "")
item.Enabled = true;
}


}

asadegha
چهارشنبه 25 مرداد 1391, 05:45 صبح
اینجا (http://barnamenevis.org/showthread.php?356500-%D9%86%D8%B3%D8%A8%D8%AA-%D8%AF%D8%A7%D8%AF%D9%86-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%B5%D9%88%D8%AA%DB%8C-%D8%A8%D9%87-%D9%81%D8%B1%D9%85-%DB%8C%D8%A7-%D8%AF%DA%A9%D9%85%D9%87) هم واسه اقزودن صدا

rezayeman
چهارشنبه 25 مرداد 1391, 08:09 صبح
سلام
بهترین راه حل اینه که 1 تایمر بزاری توی فرم اصلیت با interval = 100 و بعد این کد رو بنویسی

private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Form2 f = new Form2();
f.ShowDialog();
}


من امتحان کردم جواب میده

Mahmoud.Afrad
چهارشنبه 25 مرداد 1391, 15:55 عصر
سلام
بهترین راه حل اینه که 1 تایمر بزاری توی فرم اصلیت با interval = 100 و بعد این کد رو بنویسی

private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Form2 f = new Form2();
f.ShowDialog();
}


من امتحان کردم جواب میده

این تایمر چه کارست؟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!
شما که همون اول تایمر رو غیرفعال کردید رفته پی کارش.

hamedjonjon
چهارشنبه 25 مرداد 1391, 16:06 عصر
ممنون از همه جواب ها


در مثالی که شما از IE زدی، فرم Internet options یک فرم MDI نیست. بلکه به صورت مجزا و با متد ShowDialog() باز شده.

خوب حالا اگه من بخوام یه همچین فرمی رو درست کنم( با متد ShowDialog() )، چطور باید این کار رو انجام بدم؟
در ضمن من در MDI می دونستم باید چطور اطلاعات رو به فرم اصلی بفرستم(مثلا با وارد کردن نام کاربری و رمز ، نام فرد در صفحه اصلی نمایش داده می شد)حالا اینجا چطور باید این کار رو انجام بدهم؟



بهترین راه حل اینه که 1 تایمر بزاری توی فرم اصلیت با interval = 100 و بعد این کد رو بنویسی

جالبه!!!
لطفا قبل از نظر دادن مطلب رو کامل مطالعه کنید، یک وقتی ...

blackwidow64
سه شنبه 31 مرداد 1391, 12:06 عصر
بایستی property ، Top Most فرم مربوط به لاگین را True کنید.