當客戶輸入名稱名稱的一部分並按F2時,我必須進行搜索。C#DataGridView KeyPress
因此,如果他們鍵入「SMI」並按F2,它應該搜索SMI並給出符合該條件的列表。
這裏是我的按鍵代碼:
private void ScanCheckKeyDown(object sender, KeyEventArgs e)
{
// Search for customer
if (e.KeyCode == Keys.F2)
AccountSearchScreen();
// Cancel ACH Process
if (e.KeyCode == Keys.F3)
if (backgroundWorker1.IsBusy) CancelAsyncButtonClick(sender, e);
// Scan Checks
if (e.KeyCode == Keys.F5)
ButtonScanChecksClick(sender, e);
// Submit & Close Batch
if (e.KeyCode == Keys.F8)
ButtonSaveClick(sender, e);
}
而且AccountSearchScreen方法:
private void AccountSearchScreen()
{
if (dgv_Checks.CurrentRow == null) return;
var dr = dgv_Checks.CurrentRow;
//var name = dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].Value.ToString().Trim().ToUpper();
//dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].Value = name;
var searchkey = dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].EditedFormattedValue == null ? string.Empty :
dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].EditedFormattedValue.ToString().Trim().ToUpper();
if (searchkey.Length == 0)
{
dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].ErrorText = "Please enter part of the last name to search.";
return;
}
var cs = new CustomerSearch(searchkey);
cs.ShowDialog(this);
if (cs.Branch != null && cs.Branch.Trim().Length == 2 && cs.AccountNumber != null && cs.AccountNumber.Trim().Length == 5)
{
dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].ErrorText = string.Empty;
dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].Value = cs.NameOnAccount;
dr.Cells[checkTrans.IndividualCheck.BranchColumn.ColumnName].Value = cs.Branch;
dr.Cells[checkTrans.IndividualCheck.AccountBalanceColumn.ColumnName].Value = GetAccountBalance(cs.Branch + cs.AccountNumber);
dr.Cells[checkTrans.IndividualCheck.AccountNumberColumn.ColumnName].Value = cs.AccountNumber;
}
else
{
dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].ErrorText = "No account found for [" + dr.Cells[checkTrans.IndividualCheck.NameOnCheckColumn.ColumnName].Value + "].";
}
}
我的問題是,當我在這裏設置名稱:
dr.Cells [checkTrans.IndividualCheck .NameOnCheckColumn.ColumnName] .Value = cs.NameOnAccount;
它不適用。名字仍然顯示「SMI」。
我相信我知道爲什麼,糾正我,如果我錯了。它永不改變的原因是因爲當我按下F2時,我絕對不會將焦點從名稱字段中移出,它仍然具有焦點,所以直到我離開字段時,纔會應用編輯。然後SMI被應用覆蓋cs.NameOnAccount。
是這樣嗎?
無論哪種方式,我該如何解決這個問題?
非常感謝您的幫助!
這是一個WinForm應用程序嗎? – 2011-05-31 16:23:32
這是一個C#WinForms應用程序 – ErocM 2011-05-31 17:21:44
我無法重現,但在設置DGV單元值後嘗試調用'dgv_Checks.EndEdit();'。 – 2011-05-31 17:38:43