PDA

View Full Version : سوال: علت باز نشدن فرم MDI بعد از فرم Login



bitasoft.ir
سه شنبه 19 خرداد 1388, 12:36 عصر
با سلام به اساتید
من یه فرم لاگین دارم که باید بعد از چک نام کاربری و کلمه عبور ، یک فرم mdi رو در vb.net 2005 باز کنه. کد به شرح زیر است:


If textBox1.Text = ""OrElse textBox2.Text = ""Then
MessageBox.Show("مقادیر فیلدها نمی توانند خالی باشند")
Else
Dim dbCheck AsNew FirstClass()
Dim dtChek AsNew DataTable()
dtChek = dbCheck.dbOut(("SELECT TOP 100 PERCENT UserName, Password FROM dbo.Users WHERE (Password = '" & textBox2.Text.Trim() & "' AND UserName = '") + textBox1.Text.Trim() & "') ORDER BY UserName")
If dtChek.Rows.Count <= 0 Then
MessageBox.Show("نام کاربری و کلمه عبور اشتباه وارد شده اند")
Else
Me.Close()
Dim frm As frmMain = New frmMain()
frm.Show()
EndIf
EndIf


ولی نمی دونم چرا وقتی می خواد وارد بشه هم فرم login بسته می شه و هم فرم MDI اصلی.

سناریوی کار هم به این صورته که اول باید فرم login بسته بشه و بعد فرم MDIکه اسمش frmMain هست باز بشه.

لطفا اگه میشه یک رهنمائی بفرمائید. خیلی هم دنبالش گشتم. ولی چیزی به دست نیومد.

HamidNazari
سه شنبه 19 خرداد 1388, 13:03 عصر
ببین دوست عزیز دلیل کار نکردن کدت اینه که فرم لاگین بسته میشه و آبجکتش از بین میره ، بنابراین فرم اصلی هم آبجکش از بین میره چون تو دل یه متدی از فرم لاگینه .
به هر حال ، یه مقدار به کدت تغییر رویه بدی مشکلت حل میشه . یه نگاه به فایل ضمیمه این پست بنداز . متنش رو بعداً بخون . پسوردش هم 123 هست .
http://barnamenevis.org/forum/showpost.php?p=616058&postcount=8

bitasoft.ir
سه شنبه 19 خرداد 1388, 13:11 عصر
ببین دوست عزیز دلیل کار نکردن کدت اینه که فرم لاگین بسته میشه و آبجکتش از بین میره ، بنابراین فرم اصلی هم آبجکش از بین میره چون تو دل یه متدی از فرم لاگینه .
به هر حال ، یه مقدار به کدت تغییر رویه بدی مشکلت حل میشه . یه نگاه به فایل ضمیمه این پست بنداز . متنش رو بعداً بخون . پسوردش هم 123 هست .
http://barnamenevis.org/forum/showpost.php?p=616058&postcount=8

هیچی حالیم نشد.
آخه اصلا ربطی به این کدهای من نداشت. (اصلا شبیه نبود)
تغییر کد رو بی زحمت اگه میشه بگین چطوری بدم.

sari-1369
سه شنبه 19 خرداد 1388, 14:11 عصر
شما اول فرم MDI رو اجرا کن ، بعدش فرم login رو ببند .

mina.net
سه شنبه 19 خرداد 1388, 14:45 عصر
شما باید فرم لاگین رو به عنوان فرزند همزمان با فرم mdi نمایش بدی و برای اینکه کاربر قبل از واد کردن پسورد با فرم اصلی نتونه کاری بکنه باید کنترل های روی فرم mdi غیر فعال گردند و بعد از چک کردن پسورد کنترل ها فعال شوند.

bitasoft.ir
سه شنبه 19 خرداد 1388, 18:54 عصر
شما اول فرم MDI رو اجرا کن ، بعدش فرم login رو ببند .

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

هر دو رو می بنده

bitasoft.ir
سه شنبه 19 خرداد 1388, 18:55 عصر
شما باید فرم لاگین رو به عنوان فرزند همزمان با فرم mdi نمایش بدی و برای اینکه کاربر قبل از واد کردن پسورد با فرم اصلی نتونه کاری بکنه باید کنترل های روی فرم mdi غیر فعال گردند و بعد از چک کردن پسورد کنترل ها فعال شوند.

ممنون. ولی من می خوام که اول فرم login بیاد . بعد بسته بشه و فرم MDI بیاد بالا.
من دقیقا همین رو می خوام.
اگه میشه روی اون کدی که من نوشتم توضیح بدین که هم به درد من و هم به درد ملت خوره.

با تشکر:گریه:

mina.net
سه شنبه 19 خرداد 1388, 21:22 عصر
ممنون. ولی من می خوام که اول فرم login بیاد . بعد بسته بشه و فرم MDI بیاد بالا.
من دقیقا همین رو می خوام.
اگه میشه روی اون کدی که من نوشتم توضیح بدین که هم به درد من و هم به درد ملت خوره.

با تشکر:گریه:
دوست عزیز من بارها این کارو کردم ولی نشد. شاید شما یک راهی پیدا کردی. چون فرم mdi شما از طریق این فرم لاگین باز می شه هنگامی که فرم لاگین بسته می شه فرم mdi هم بسته می شه. می تونی امتحان کنی فرم لاگین رو نبند یعنی کد me.close رو بردار می بینی که فرم mdi هم بسته نمی شه. حالا خودت دستی برو و فرم لاگین رو ببند می بینی که فرم mdi به همراه فرم بسته می شه.
نمی دونم شاید راهی باشه من که قبلا خیلی تلاش کردم نشد.

sari-1369
چهارشنبه 20 خرداد 1388, 00:55 صبح
این کار رو هم کردم.
باز هم نشد.

هر دو رو می بنده

فکر کنم اگر فرم login رو فقط hide کنی و close نکنی مشکلت حل بشه ( ولی این کارم زیاد منطقی نیست :لبخند: )

bitasoft.ir
چهارشنبه 20 خرداد 1388, 02:51 صبح
سلام
پس این شرکتهای برنامه نویسی فرمهای لاگین رو چطوری با امنیت بالا می نویسن؟

nima178
چهارشنبه 20 خرداد 1388, 02:57 صبح
در حال حاضر منم همين مشكل رو دارم
هر دو رو مي بنده
داشتم سرچ مي كردم اينو ديدم
در هر روي
اگر تونستم جوابي پيدا كنم مي زارم

bitasoft.ir
چهارشنبه 20 خرداد 1388, 09:33 صبح
آقا آخرش با یه خلاقیت فردی این مشکل رو تقریبا حل کردم. فقط میمونه بهینه سازی کدها که اگه میشه یه کمکی تو اون بکنین:
این از کد مربوط به فرم لاگین.


Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
If textBox1.Text = "" OrElse textBox2.Text = "" Then
MessageBox.Show("مقادیر فیلدها نمی توانند خالی باشند")
Else
Dim dbCheck As New FirstClass()
Dim dtChek As New DataTable()
dtChek = dbCheck.dbOut(("SELECT TOP 100 PERCENT UserName, Password FROM dbo.Users WHERE (Password = '" & textBox2.Text.Trim() & "' AND UserName = '") + textBox1.Text.Trim() & "') ORDER BY UserName")
If dtChek.Rows.Count <= 0 Then
MessageBox.Show("نام کاربری و کلمه عبور اشتباه وارد شده اند")
Else
Me.Visible = False
Dim frm As frmMain = New frmMain()
frm.DialogResult = Windows.Forms.DialogResult.OK
frm.Show()
End If
End If
End Sub


بعد از بستن فرم MDI باید فرم لاگین هم که در حقیقت باز ایت بسته بشه.
این هم کد اون: (در ایونت FormClosed)


Private Sub frmMain_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
frmLogin.Close()
End Sub


در صورتی که واسه بهینه سازیش موردی به نظرتون میرسه بگین لطفا.

bitasoft.ir
پنج شنبه 21 خرداد 1388, 14:29 عصر
سلام به اساتید
لطفا اگه میشه یه راهنمایی بکنین که امنیت این کدها رو کمی ببریم بالا.
(در پست قبلی)