freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

datagridview控件(編輯修改稿)

2024-10-22 17:32 本頁面
 

【文章內(nèi)容簡介】 件,在這里,調(diào)用CommitEnd方法提交新值。 DataGridViewImageColumnDataGridViewImageColumn 類型的列用于顯示圖像。這種類型的列有三種方法生成:綁定到數(shù)據(jù)源時自動生成;為非綁定列手動生成;在CellFormatting事件處理函數(shù)(該事件發(fā)生在單元格顯示前)中動態(tài)生成。 綁定到數(shù)據(jù)源時自動生成Image列的方法適用于大量的圖像格式,還有Access數(shù)據(jù)庫及Northwind范例數(shù)據(jù)庫使用的OLE圖片格式。
如果你想提供DataGridViewButtonColumn列的功能,又希望顯示自定義的外觀,手動生成Image列會很有用。在顯示后,你可以處理CellClick事件以處理用戶對單元格的點擊(模擬按鈕列)。如果你要為計算值或非圖片的值提供圖片顯示,在CellFormatting事件處理函數(shù)中動態(tài)生成Image列的方法會很有用。比如,你有一個表示風險值的列,它的值可能是”high”、”middle”或”low”,可以為它們顯示不同的圖標作為警示;或者你有一個名為”Image”的列,它的值時圖片文件的位置而不是真實的圖片內(nèi)容,也可以用這種方法。 常見問題1) 如何使Image列不顯示任何圖像(字段值為null時)? DataGridViewButtonColumn使用DataGridViewButtonColumn 列,可以在單元格內(nèi)顯示按鈕。如果你要為用戶操作特定行提供一種簡單的方式,Button列會很有用,比如排序或在另一個窗體中顯示子表記錄。 在對DataGridView進行數(shù)據(jù)綁定時不會自動生成Button列,所以你必須手動創(chuàng)建它們,然后把它們添加到DataGridView控件的Columns集合中。你可以處理CellClick事件以響應(yīng)用戶的點擊動作。 DataGridViewComboBoxColumn在DataGridViewComboBoxColumn類型的列中,你可以顯示包含下拉列表的單元格。這在僅允許用戶輸入一些特定值的時候顯得很有用,比如在SQL Server示例數(shù)據(jù)庫Northwind中Products表的Category列,它表示產(chǎn)品的種類,這個應(yīng)只允許選擇現(xiàn)有的產(chǎn)品種類,此時就可以使用ComboBox列。 如果你了解如何為ComboBox控件生成下拉列表,就可以用相同的方式為ComboBox列中的所有單元格生成下拉列表。要么通過列的Items集合手動添加,要么通過DataSource,DisplayMember 和ValueMember屬性綁定到一個數(shù)據(jù)源。要了解其中的更多信息,可以參考WinForms中ComboBox空間的用法。 你可以將ComboBox列的單元格的實際值綁定到DataGridView控件本身的數(shù)據(jù)源(注意不是ComboBox列的數(shù)據(jù)源),這需要設(shè)置該列的DataPropertyName屬性(設(shè)置某個列的名稱)。 ComboBox列不會在數(shù)據(jù)綁定時自動生成,所以你必須手動創(chuàng)建它們,然后將其添加到Columns集合屬性中。另外,你也可以使用設(shè)計器,在設(shè)計時設(shè)置相應(yīng)的屬性,這個過程類似于在設(shè)計器中ComboBox控件的使用。 DataError事件和ComboBox列在使用DataGridViewComboBoxColumn 時,有時會修改單元格的值或啟動ComboBox控件的Items集合,這樣可能會引發(fā)DataError事件。這是ComboBox列的設(shè)計使然,ComboBox列的單元格會進行數(shù)據(jù)驗證。在ComboBox列的單元格嘗試繪制包含的內(nèi)容時,它需要將包含的值進行格式化(見第二章第三節(jié)),在此轉(zhuǎn)換過程中,它會在ComboBox的Items集合中查找對應(yīng)的值,如果查找失敗,就會引發(fā)DataError事件。忽略了DataError事件可能會使單元格不能進行正確的格式化。 常見問題1) 如何能夠在ComboBox類型的單元格中輸入數(shù)據(jù)?2) How do I handle the SelectedIndexChanged event?3) How do I have a bo box column display a sub set of data based upon the value of a different bo box column? DataGridViewLinkColumn使用DataGridViewLinkColumn列,你可以顯示一列包含超鏈接的單元格。在顯示數(shù)據(jù)源中的URL值,或者替代按鈕列進行一些特殊行為,如打開另一個子記錄窗體時會很有用。 Link列也不會在DataGridView數(shù)據(jù)綁定時自動生成。要使用它,你還得手動創(chuàng)建,然后將它添加到DataGridView控件的Columns集合中。你可以處理CellContentClick事件來相應(yīng)用戶的點擊動作。這個事件不同于CellClick 和CellMouseClick 事件,后兩者在用戶點擊單元格任何位置(而不僅僅時鏈接)時都會觸發(fā)。 DataGridViewLinkColumn 類提供了幾個屬性,用來修改鏈接的外觀,包括點擊前,點擊時和點擊后(類似于網(wǎng)頁中的超鏈接)。4 操作數(shù)據(jù)(Working with Data)多數(shù)情況下,使用DataGridView的時候都需要跟數(shù)據(jù)打交道,這時有很多事情可能需要你去做。你需要驗證用戶輸入的數(shù)據(jù),或者需要對數(shù)據(jù)進行格式化。DataGridView能夠以三種模式顯示數(shù)據(jù):bound、unboundand 和virtual。每種模式都有自己的特性和存在的理由。不管是否是數(shù)據(jù)綁定模式,在操作數(shù)據(jù)時,如果發(fā)生錯誤,DataGridView通常會觸發(fā)DataError事件,理解該事件發(fā)生的原因能讓你更好地利用它。 數(shù)據(jù)輸入和驗證的相關(guān)事件用戶輸入數(shù)據(jù)時-對其所在的行或單元格,你可能希望驗證這些數(shù)據(jù),在遇到無效數(shù)據(jù)時通知用戶。就像常見的Windows Forms控件,DataGridView的行和單元格也有Validating和Validated事件,驗證事件可被取消。用戶在單元格/行間移動時會觸發(fā)Enter和Leave事件。最后,用戶在開始編輯單元格時也會觸發(fā)事件。了解所有這些程序的發(fā)生順序會對你很有幫助。 數(shù)據(jù)驗證相關(guān)事件的順序下面列出validation,enter/leave和begin/end這些事件的順序(當EditMode為EditOnEnter時):當從一個單元格移動至另一單元格(在同一行內(nèi)):1) Cell Leave (原來的單元格)2) Cell Validating/ed (原來的單元格) 3) Cell EndEdit (原來的單元格)4) Cell Enter (新的單元格)5) Cell BeginEdit (新的單元格)當從一行移動到另一行:1) Cell Leave (原來的單元格),Row leave (原來的行)2) Cell Validating/ed (原來的單元格)3) Cell EndEdit (原來的單元格)4) Row Validating/ed (原來的行)5) Row Enter (新的行)6) Cell Enter (新的單元格)7) Cell BeginEdit (新的單元格) 驗證數(shù)據(jù)驗證用戶輸入時,如果DataGridView采用非數(shù)據(jù)綁定模式,通常會對單元格進行驗證;而如果采用數(shù)據(jù)綁定模式,則一般會對行進行驗證。這與數(shù)據(jù)的組織方式密切相關(guān),非數(shù)據(jù)綁定模式下,一行的單元格間關(guān)系一般比較“散”,而綁定模式下,數(shù)據(jù)源的數(shù)據(jù)一般以行來組織。但有時在數(shù)據(jù)綁定模式下會同時進行單元格級和行級的驗證。 顯示錯誤信息一旦遭遇了無效的輸入數(shù)據(jù),你通常需要通知用戶。這時有多種方式可以選擇,傳統(tǒng)的方式是使用信息對話框。DataGridView還能夠為行或單元格顯示一個錯誤圖標來通知用戶輸入了無效數(shù)據(jù)。錯誤圖標帶有一個工具提示,它提供了該錯誤的相關(guān)信息: 常見問題(FAQ)1) 如何在用戶編輯單元格的時候顯示錯誤圖標? 在新行中的數(shù)據(jù)輸入(Data Entry in the New Row)當在程序中使用DataGridView來編輯數(shù)據(jù)時,你往往希望提供讓用戶添加新行數(shù)據(jù)的功能。DataGridView控件支持這個功能,提供了一個用于添加新記錄的行,而這一行總是顯示為最后一行,并在該行的標題單元格標以星號(*)。 下面的幾個小節(jié)會討論一些在程序中使用這個新行時需要考慮的內(nèi)容。(下面總是以 新行 表示 用于添加新記錄的行 ) 顯示新行使用AllowUserToAddRows屬性以指示是否顯示新行,其默認值為true。 新行處于網(wǎng)格的最后一行,標題帶有星號:在數(shù)據(jù)綁定的情況下, 屬性都為true時,新行才會顯示,只要兩者有一個為false,新行就不會顯示。 為生成的新行添加默認值當用戶選擇新行作為當前行,DataGridView會觸發(fā)DefaultValuesNeeded事件。在該事件中可以訪問新行,并為其生成默認值,為用戶輸入提供方便。 下面這段代碼演示了如何在DefaultValuesNeeded事件中為新行指定默認值。private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e){ [Region].Value = WA。 [City].Value = Redmond。 [PostalCode].Value = 980526399。 [Region].Value = NA。 [Country].Value = USA。 [CustomerID].Value = NewCustomerId()。} Rows集合與新行的關(guān)系新行包含在DataGridView控件的Rows集合中,又因其總是處于最后一行,下面這行代碼會返回新行:DataGridViewRow row = [ 1]。盡管新行也包含在Rows集合中,它與Rows集合中其它行的行為卻不相同,表現(xiàn)在兩點: 167。 不能以編程的方式將新行從Rows集合中移除,如果你嘗試這么做,會拋出InvalidOperationException類型的異常。用戶也不能刪除新行。()方法也不能將新行從Rows集合中移除。167。 不能在新行之后添加行。如果你嘗試這么做,會拋出InvalidOperationException 類型的異常。這種特性的結(jié)果是,新行總處于DataGridView的最后一行。當新行顯示的時候,DataGridViewRowCollection 類中用于添加行的方法-Add,AddCopy以及AddCopies-在內(nèi)部都調(diào)用用于插入的方法。 在新行中輸入數(shù)據(jù)用戶開始在新行輸入數(shù)據(jù)之前,新行的IsNewRow屬性值為true;一旦用戶開始輸入,這一行就不再是新行了,DataGridView中會產(chǎn)生一個“新”的新行,看下面示意圖:在添加“新”的新行時,會觸發(fā)UserAddedRow事件,它的事件處理函數(shù)的第二個參數(shù)有屬性Row,指定了這個“新”的新行。如果用戶此時按下Escape鍵,“新”的新行會被移除,這會觸發(fā)UserDeletingRow事件,它的事件處理函數(shù)的第二個參數(shù)的屬性Row指定了“新”的新行。 自定義新行的可視化效果新行是基于RowTemplate模板創(chuàng)建的,如果沒有指定它的單元格的樣式,它們會采用繼承的樣式。要了解樣式繼承的更多信息,請參看第五章第一節(jié)的內(nèi)容。新行中單元格的初始值是由每個單元格的DefaultNewRowValue屬性決定的。對于DataGridViewImageCell類型的單元格,其初始值為一個占位圖片,其它類型的則為null。你可以重寫這個屬性以返回自定義值。但也可以在DefaultValuesNeeded事件處理函數(shù)中對默認值進行替換,該事件在焦點進入新行時觸發(fā)。新行標題的標準圖標是箭頭或者星號,并沒有得到暴露。如果你要自定義這個圖標,就需要創(chuàng)建一個自定義的DataGridViewRowHeaderCell 類。 新行的標題的標準圖標使用標題單元格DataGridViewCellStyle的ForeColor屬性。注意:如果沒有足夠的空間,圖標就不會再顯示。如果為標題單元格設(shè)置了字符串值(通過Value屬性),但沒有足夠的控件同時顯示文本和圖標,那么圖標會被首先截掉。 新行的排序在非綁定模式下,新行總是添加在DataGridView的最后一行,即使已經(jīng)對數(shù)據(jù)排序。用戶需要在添加新行后再次進行排序,以將新記錄放在合適的位置;這種行為方式類似于ListView控件。在綁定模式或虛擬模式(Virtual Mode)下,如果已對數(shù)據(jù)排序,那么插入數(shù)據(jù)時的行為取決于數(shù)據(jù)模型的實現(xiàn)方式。,新加的行會被自動排序至合適的位置。 關(guān)于新行,還要注意:你不能將新行的Visible屬性值設(shè)置為false,否則會觸發(fā)一個InvalidOperationException類型的異常。新行在創(chuàng)建時總是處于非選中(unselected)狀態(tài)。 Virtual Mode下的新行如果你正要實現(xiàn)虛擬模式(Virtual Mode),需要考慮數(shù)據(jù)模型添加新行和回滾添加操作的情況。該功能準確的實現(xiàn)方式取決于數(shù)據(jù)模型的實現(xiàn)方式及其事務(wù)機制,例如,提交的時候是針對單元格還是行。參看本文檔后面關(guān)于Virtual Mode的主題。 關(guān)于Null值在使用數(shù)據(jù)源的時候,比如數(shù)據(jù)庫或業(yè)務(wù)對象,經(jīng)常需要處理null值。null值可能是一個實際的null(VB中為Nothing),也可能是一個數(shù)據(jù)庫的”null”值(),當你遭遇了這些值,就需要考慮如何顯示它
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1