我正在爲WinForms項目組織一個輕量級MVP模式。一切都編譯並運行良好。但是,當我嘗試在Visual Studio中以設計模式打開WinForm時,出現「路徑中的非法字符」錯誤。我的WinForm使用泛型並從基本Form類繼承。在WinForm中使用泛型有問題嗎?「路徑中存在非法字符」。 Visual Studio WinForm設計視圖
這裏是WinForm和基本Form類。
public partial class TapsForm : MvpForm<TapsPresenter, TapsFormModel>, ITapsView
{
public TapsForm()
{
InitializeComponent();
}
public TapsForm(TapsPresenter presenter)
:base(presenter)
{
InitializeComponent();
UpdateModel();
}
public IList<Taps> Taps
{
set { gridTaps.DataSource = value; }
}
private void UpdateModel()
{
Model.RideId = Int32.Parse(cboRide.Text);
Model.Latitude = Double.Parse(txtLatitude.Text);
Model.Longitude = Double.Parse(txtLongitude.Text);
}
}
基本形式MvpForm:
public class MvpForm<TPresenter, TModel> : Form, IView
where TPresenter : class, IPresenter
where TModel : class, new()
{
private readonly TPresenter presenter;
private TModel model;
public MvpForm()
{
}
public MvpForm(TPresenter presenter)
{
this.presenter = presenter;
this.presenter.RegisterView(this);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (presenter != null)
presenter.IntializeView();
}
public TModel Model
{
get
{
if (model == null)
throw new InvalidOperationException("The Model property is currently null, however it should have been automatically initialized by the presenter. This most likely indicates that no presenter was bound to the control. Check your presenter bindings.");
return model;
}
set { model = value;}
}
}
是的,設計師不支持通用的基礎表單。你可能沒有那麼遠,我猜它正在死於異常,因爲你沒有在設計器(構造函數,Load事件)中運行的代碼中檢查DesignMode屬性。 – 2010-03-30 16:57:55