我在用戶控件(SearchControl)這樣創造了一個新的事件:這是引發上雙擊或輸入添加事件,表單設計文件
//事件
public event EditRecordEventHandler EditRecord;
public delegate void EditRecordEventHandler(object sender, EventArgs e);
// Supressing的事件
private bool _raiseEvents = true;
private void OnEditRecord(System.EventArgs e)
{
if (_raiseEvents)
{
if (this.SearchResultGridView.FocusedRowHandle > -1)
{
if (EditRecord != null)
{
EditRecord(this, e);
}
}
}
}
現在,當用戶雙擊網格中的一行時,會調用此事件。所以從屬性窗口我選擇了網格視圖的MouseDoubleClick事件並調用上面創建的EditRecord事件。
private void SearchResultListGridControl_MouseDoubleClick(object sender, MouseEventArgs e)
{
// Check whether the user clicked on a real and not a header row or group row
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo info = SearchResultGridView.CalcHitInfo(e.Location);
if (info.InRow && !SearchResultGridView.IsGroupRow(info.RowHandle))
{
OnEditRecord(e);
}
}
現在我面臨的問題是,我每次雙擊在網格視圖中的行,它調用SearchResultListGridControl_MouseDoubleClick(),然後調用OnEditRecord()時間,但是EditRecord的值是每次空。
爲了解決這個問題,我檢查了具有SearchControl的Main Control的設計器文件,並且無法在此找到EditRecord Event條目。所以,我手動創建這樣的:
this.MySearchControl.EditRecord += new performis.BA.Merkmalsleisten.Search.SearchControl.EditRecordEventHandle(this.MySearchControl_EditRecord);
現在的東西都工作正常,但我的問題是,爲什麼沒有在第一位置自動創建呢?據我所知,不建議手動添加任何東西到設計器文件..有沒有其他辦法可以做到這一點?
謝謝
你的意思是「自動創建它」?如果您需要特定的事件,則可以通過IDE設計器或代碼將其明確綁定。您可以在onload或init事件中將事件處理程序綁定在代碼隱藏中,而不是在designer.cs文件中 – Kelmen