2012-10-28 1 views
2

Dans ma solution C# (3.5), j'ai 2 projets: un projet Bibliothèque de classes et WinForm.Mettre l'accent à partir de la bibliothèque de classes

Toutes les logiques métier sont dans la bibliothèque de classes. lors de l'ajout/la mise à jour de données à partir de WinForm, si la bibliothèque de classes trouve une erreur, elle déclenche une erreur et définit le focus pour associer le contrôle à WinForm.

Est-ce possible?

Merci, SKPaul.

+1

vous ne pouvez pas générer une erreur dans le code managé, vous pouvez simplement lancer une exception. BL lance des exceptions et son client (c'est-à-dire sa présentation, c'est-à-dire des winforms) doit attraper cette exception et les traiter en conséquence. –

Répondre

2

Toute la logique de l'interface utilisateur doit rester dans votre projet WinForm. Vous devrez passer votre contrôle à la bibliothèque de classes pour définir le focus de la bibliothèque qui est la plupart du temps un mauvais design. À la place:

namespace ClassLibrary 
{ 
    public class Utility 
    { 
     public static string ReadData() 
     { 
      return "abc"; 
     } 
    } 
} 

namespace Win_App 
{ 
    public partial class Form1 : Form 
    { 
     private void button2_Click(object sender, EventArgs e) 
     { 
      if (ClassLibrary.Utility.ReadData() == null) 
      { 
       MessageBox.Show("error, redo"); 
       button2.Focus(); //you should handle this here. 
       return; 
      } 
     } 
    } 
} 

L'idée de base ici est de signaler une valeur de retour appropriée en cas d'erreur. Par exemple, une valeur nulle pour un objet ou une valeur false pour une valeur booléenne. Vous devriez vérifier cela dans le projet d'interface utilisateur, et le gérer là. Dans votre cas, la mise au point doit donc provenir du projet WinForm.

+0

merci nawfal, j'ai eu l'idée de votre exemple. –

Questions connexes