2017-03-29 4 views
1

Ich möchte, dynamisch, Formulare je nach Art des Benutzers erstellen. Zum Beispiel: Ich möchte, wenn es ein Administrator ist, das Formular oder die Schaltflächen für diesen Benutzer speziell erstellen. Im Code meiner Anmeldung gibt es eine Validierung, die den Typ des Benutzers identifiziert. Aber ich tat das nur, wenn es den Benutzer identifiziert, um es zu dem entsprechenden Bildschirm mit seinen bereits gesetzten Knöpfen zu senden, aber was ich will ist, dass beim Identifizieren des Benutzertyps die Knöpfe erzeugen, denen der Benutzer Zugang haben sollte; Der Benutzer hat einen Benutzertyp, und dieser Benutzertyp hat 1 oder mehr Berechtigungen. Erstellen Sie dann die Schaltflächen, je nachdem, wie viele Berechtigungen der Benutzer besitzt. Jede Erlaubnis ist eine Schaltfläche. Beispiel: Der Benutzer Alfonso ist eine Art von Verkauf und hat die Berechtigung zum Rechnen und Verkaufen, dann, wenn es eine Sitzung einleitet, werden die Schaltflächen "Rechnung" und "Verkaufen" generiert.Wie erstellt man ein Formular dynamisch?

+1

winforms dynamisch erstellt werden. –

Antwort

0

Die einfachste Möglichkeit besteht darin, Klassen zu erstellen, die von Form erben, und fügen Sie die gewünschten Steuerelemente hinzu, und legen Sie die Eigenschaften der Steuerelemente auf was Sie möchten. Wenn Sie ein Formular benötigen, erstellen Sie einfach eine new. Bei Bedarf können Sie Parameter übergeben, die Sie beim Einrichten des Formulars über den Konstruktor benötigen.

0

Im Folgenden finden Sie ein Beispiel, das zeigt, wie Sie verschiedene Formulare basierend auf dem Benutzertyp öffnen können. Sie können es weiter optimieren, wenn Sie es gemäß Ihren Anforderungen neu gestalten. In der unteren Code-Annahme ist FUser1 und FUser2 sind 2 Formulare, die gemäß der userType Variablen geöffnet werden.

private FUser1 fUser1; 
private FUser2 fUser2; 
private FUser2 fUserAdmin; 

private void OpenForm(int userType) 
{ 
    switch (userType) 
    { 
     case 1: 
      if (fUser1 == null) 
      { 
       fUser1 = new FUser1(); 
       //do initialization specific to FUser1 
       fUser1.txtLogin.Text = "Robinhood"; 
      } 
      fUser1.Show(); 
      break; 
     case 2: 
      if (fUser2 == null) 
      { 
       fUser2 = new FUser2(); 
       //do initialization specific to FUser2 
       fUser2.btnProcess.Enable = false; 
       fUser2.btnPermit.Visible = false;    
      } 
      fUser2.Show(); 
      break; 
     case 3: //Admin 
      if (fUserAdmin == null) 
      { 
       fUserAdmin = new FUser2(); 
       //do initialization specific to FUser2 
       fUserAdmin.btnProcess.Enable = true; 
       fUserAdmin.btnPermit.Visible = true; 
       fUserAdmin.ProcessSales(); //Public function in FUser2 
      } 
      fUserAdmin.Show(); 
      break; 
    }   
} 
2
  1. erstellen "Usertype" Tabelle:

    | id | userType  | 
    |--------------------------| 
    | 1 | Administrator | 
    | 2 | Sales   | 
    
  2. erstellen "Menü" oder "Optionen" Tabelle:

    | id | option | 
    |---------------------| 
    | 1 | Invoice | 
    | 2 | Sell  | 
    
  3. eine Berechtigung erstellen von Benutzertyp Tabelle (mit der Liste der Optionen)

    | idUserType | idOption | allow | 
    |----------------|--------------|----------| 
    |   2  |  1  | true | 
    |   2  |  2  | true | 
    
  4. erstellen, um alle Optionen in Ihrem aplication [dynamischen] (die Tasten mit den Optionen aus der Datenbank erstellen)

  5. Wenn Anmeldung alle Berechtigungen für den Benutzertyp
  6. Ändern des sichtbare Attribut auf false erhält für alle Tasten, außer denen, auf die Berechtigungen von Benutzertyp Tabelle

das ist meine Idee, alle konfigurierbaren aus der Datenbank

Verwandte Themen