2012-10-28 106 views
2

在我的C#(3.5)解決方案中,我有2個項目 - 一個類庫和WinForm項目。設置焦點從類庫

所有業務邏輯都在類庫中。當從WinForm中添加/更新數據時,如果類庫發現任何錯誤,它將引發錯誤並將焦點設置爲將WinForm中的控件關聯起來。

可能嗎?

謝謝, SKPaul。

+1

你不能在託管代碼中引發錯誤,你可以拋出異常。 BL引發異常,其客戶(即表示,即winforms)必須捕獲異常並相應地處理它們。 –

回答

2

所有UI邏輯都應該保留在您的WinForm項目中。你將不得不將你的控制權交給類庫,以便從圖書館中設置重點,這是一個糟糕的設計。相反:

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; 
      } 
     } 
    } 
} 

這裏的基本思想是在一個錯誤的情況下信號的適當的返回值。例如一個對象的空值,或一個布爾值的false。你應該在UI項目中檢查並在那裏處理。在你的情況下,設置重點應該來自WinForm項目。

+0

感謝nawfal,我從你的例子中得到了這個想法。 –