我懇請您耐心的看完我的故事解決一個看似簡單的問題,射擊DataGridView的CellValueChanged事件立即做千位分隔符
我的主要目的是做千個分隔符在DataGridView中, 當我打字這意味着12345它變成12,345 與其他任務的區別在於當用戶輸入時不是當他或她離開單元格時執行此操作,
我無法在datagridview事件中找到任何方法,只要在單元格中添加數字,例如如果目的是在feeColumn中寫入12345,它必須被解僱五次,
許多研究後,我碰到這個代碼做的,但它也存在一些問題:
myGrid:
ItemName Quantity FeeColumn
Private void grdTrading_CurrentCellDirtyStateChanged(object sender, System.EventArgs e)
{
If (grdTrading.IsCurrentCellDirty)
{
grdTrading.CommitEdit(DataGridViewDataErrorContexts.Commit)
}
}
Private void grdTrading_CellValueChanged(object sender , System.Windows.FormsDataGridViewCellEventArgs e)
{
grdTrading.Columns[ColumnFee.Name].DefaultCellStyle.Format=(Decimal.Parse(grdTrading.Rows[0].Cells[ColumnFee.Name].Value.Tostring())).Tostring("#,##0")
}
現在有什麼不對?
當它首先進入
grdTrading_CurrentCellDirtyStateChanged
並做commitEdit的它不再允許把任何數據單元格和刪除數據,而用戶改變其細胞現在你想有數據,它成功地運行,甚至運行
cellValueChanged
一次我添加任何數字的費用列, 我的意思是1,那麼12然後123然後1234,然後12345 但依然有我的網格沒有逗號,當我打字,
我真的受夠了這個問題,任何幫助或任何其他解決方案,歡迎到我的朋友,
你似乎將列的樣式格式設置爲單元格的實際值,即'column.DefaultCellStyle.Format =「123,456」'。 – stuartd
如果您想在輸入時自動應用千位分隔符,請先用普通的'TextBox'嘗試。然後,如果成功,處理'DataGridView'的'EditingControlShowing'事件並獲取顯示爲編輯控件的'TextBox'並將邏輯應用於它。 –
@stuartd Thx您的評論,是的,我正在這樣做,現在我得到了我做的一份愚蠢的工作,我可以請你與我分享你的想法嗎? – sariiia