2010-08-17 21 views
7

मुझे लॉगिन फॉर्म के लिए अपना मुख्य फॉर्म छिपाने में परेशानी हो रही है। एक बार जब उपयोगकर्ता लॉग इन फॉर्म को बंद कर देता है और मुख्य फॉर्म दिखाता है।सी # लॉगिन उदाहरण

मैं खुद को भ्रमित कर रहा हूं कि मैंने सभी कोड हटा दिए हैं और ताजा शुरू किया है। मैं लॉगिन फॉर्म को ठीक से छुपा सकता हूं।

मैं

Application.Run(new MainForm()); 

लॉग इन फार्म के साथ कहा जाता है मुख्य रूप छिपाने के लिए असमर्थ था इस तरह दिखता है:

namespace WindowsFormsApplication1 
{ 
    public partial class LoginForm : Form 
    { 
     public LoginForm() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string username; 
      string password; 

      username = TB_username.Text; 
      password = TB_password.Text; 

      if (User.Login(username, password)) 
      { 
       Globals._Login = true; 

       // Close login form 
       this.Dispose(false); 

      } 
      else 
      { 
       MessageBox.Show("Login Failed"); 
      } 

     } 
    } 
} 

मैं नहीं कर सकते तो यह पता लगाने को छिपाने के मुख्य रूप को दिखाने के लिए एक बार लॉगिन बीत चुका है करने के लिए कैसे ।

धन्यवाद किसी भी उदाहरण बहुत अच्छा होगा

+0

क्या होता है जब आप MainForm में "छिपाएं()" कहते हैं:

private void FRIIB_Load(object sender, EventArgs e) { try { QueryBuilder.insql = Crypto.DecryptStringAES(Model.DecryptRegisteryValue("inSQL"), "inSQL"); } catch (Exception exc) { MessageBox.Show(exc.Message); } // getting connection string if (!(new Func<bool>(() => { Func<bool> l = null; l =() => { using (LoginForm loginDialog = new LoginForm()) { loginDialog.ShowDialog(); loginDialog.Focus(); if (loginDialog.IsExit) return false; else if (loginDialog.IsAuthorized) return true; else return l(); } }; return l(); } )() )) Close(); else w8(() => LoadData()); } 

और यहाँ कोड के लिए कुछ वर्णन है? – Blam

+0

असंबद्ध लेकिन लॉगिन के पासवर्ड हिस्से के लिए 'स्ट्रिंग' के बजाय 'सिक्योरस्ट्रिंग' का उपयोग करने पर विचार करें। – JaredPar

उत्तर

20
  1. उपयोग ShowDialog() लॉगिन प्रपत्र खोलने के लिए। फिर आपको मेनफॉर्म को छिपाने या अक्षम करने की आवश्यकता नहीं है। वास्तव में, यदि आप प्रवेश फार्म चाहते आवेदन की शुरुआत में प्रकट करने के लिए, यहां तक ​​कि MainForm लोड करने से पहले यह दिखाने पर विचार करें:

    static void Main() 
    { 
        Application.SetCompatibleTextRenderingDefault(false); 
        Application.EnableVisualStyles(); 
        DialogResult result; 
        using (var loginForm = new LoginForm()) 
         result = loginForm.ShowDialog(); 
        if (result == DialogResult.OK) 
        { 
         // login was successful 
         Application.Run(new Mainform()); 
        } 
    } 
    
  2. अपनी प्रवेश फार्म के अंदर, button1_Click में, का उपयोग

    DialogResult = DialogResult.OK; 
    
    लॉगिन फॉर्म को बंद करने के लिए

    और OK को मुख्य स्वरूप के लिए पास करें। Dispose() की कोई आवश्यकता नहीं है।

+0

धन्यवाद एक इलाज किया। – Joe

+0

कोई भी कृपया बता सकता है कि मैं मेनफॉर्म को उपयोगकर्ता विवरण कैसे प्राप्त करूंगा। – Sribin

0

उपयोग आवेदन का मुख्य रूप के भीतर से लॉगिन प्रपत्र लोड करने के लिए लॉग इन फार्म पर ShowDialog() फ़ंक्शन। यह लॉगफॉर्म समाप्त होने के बाद तक मेनफॉर्म प्रदर्शित होने से रोकेगा।

private void MainForm_Load(object sender, EventArgs e) { 
    var loginForm = new LoginForm(); 
    loginForm.ShowDialog(); 
} 
1

तो ... यहां मेरा लॉगिन है :) आप इसे पसंद कर सकते हैं या पसंद नहीं करते हैं, लेकिन ऐसा ... यह मेरा समाधान है।

private void w8(Action action) 
    { 
     Cursor.Current = Cursors.WaitCursor; 
     Application.DoEvents(); 
     action(); 
     Cursor.Current = Cursors.Default; 
    } 

Public Class DamnLogin 
    Private db As FRIIB 

    Public Sub New(ByVal connection As String) 
     db = New FRIIB(connection) 
    End Sub 

    Public Function Login(ByVal name As String, ByVal password As String) As Boolean 
     Dim GetUser = _ 
      From u In db.GetTable(Of [User])() _ 
      Where u.Name = name _ 
      And u.Password = password _ 
      Select u 
     Return GetUser.Count = 0 
    End Function 
End Class 

let Login usename password = 
    new LinqBase.DamnLogin(insql) |> fun damn -> 
     not <| damn.Login(usename,password) 

और प्रवेश फार्म

public partial class LoginForm : Form 
{ 
    bool isAuthorized; 
    bool exit; 

    public bool IsAuthorized { get { return this.isAuthorized; } } 
    public bool IsExit   { get { return this.exit;   } } 

    public LoginForm() 
    { 
     isAuthorized = false; 
     exit   = false; 

     InitializeComponent(); 
    } 

    private void Close_Click(object sender, EventArgs e) 
    { 
     exit = true; 
     this.Close(); 
    } 

    private void LoginButton_Click(object sender, EventArgs e) 
    { 
     if (Login.Text != "") 
     { 
      if (Login.Text.ToUpper() == "ADMIN") 
      { 
       if (Password.Text == Crypto.DecryptStringAES(Model.DecryptRegisteryValue("Password"), "Password")) 
        isAuthorized = true; 
      } 
      else 
      { 
       if (QueryBuilder.Login(Login.Text, Password.Text)) 
        isAuthorized = true; 
      } 
     } 

     this.Close(); 
    } 
} 
संबंधित मुद्दे