DataGrid的常見問題

來源:互聯網
上載者:User
datagrid|問題 當我們剛接觸DataGrid時候,可能會對它不太熟悉,有時候一些常見的設定都會讓你苦惱半天,鑒於此,我總結了一下它的比較常見的用法,希望能給剛接觸DataGrid的人一些協助。

一 對每一列進行一些設定,這裡就要我們對DataGrid的列有一定的認識,它的列可分為兩種,DataGridTextBoxColumn 和 DataGridBoolColumn 。當然你也可以添加你自己的列的樣式,只要繼承DataGridColumnStyle就行了(當然還要重寫一些方法)。

下面是一段代碼:

DataGridTableStyle style=new DataGridTableStyle();

style.MappingName=ds.Tables[0].TableName.ToString();



DataGridBoolColumn colu=new DataGridBoolColumn();

colu.MappingName="IsSelect";//映射到表的某一列

colu.HeaderText=""; //列的表頭名字

colu.TrueValue="Y"; //打勾時的值

colu.FalseValue="N";

colu.Width=40; //設定改列的寬度

colu.AllowNull=false; //不允許為null值

colu.ReadOnly=true; //把改列設定為唯讀

style.GridColumnStyles.Add(colu);

上面的代碼就是建立了一個DataGridBoolColumn列,該列就是一個CheckBox列,CheckBox有三種狀態,true,false,null,你可以通過設定colu.AllowNull=false;取消第三種狀態。

再看一段代碼,它是建立 DataGridTextBox列

DataGridTextBoxColumn col;

col=new DataGridTextBoxColumn();

col.MappingName="dMinimumPV";

col.HeaderText="最低累積業績";

col.Alignment=HorizontalAlignment.Right;//該列的對齊

col.Format="#,###.00"; //設定顯示的格式

col.Width=90;

style.GridColumnStyles.Add(col);

相信這兩段代碼應該讓你對DataGrid的列的設定有了一定的瞭解了吧!

二 捕獲DataGrid裡的雙擊事件,本來很簡單的問題,可是如果你只對DataGrid的DoubleClicked裡寫程式的話,你就會發現一個問題,在DataGrid的cell裡雙擊時沒有反應,這是因為在DataGrid裡有TextBox組成,所以你就需要捕獲TextBox的DoubleClicked事件,但你完成這一步時,看看效果咋樣,如果你仔細的話,你就又會發現一個問題,當游標還沒有在一個儲存格時,雙擊該儲存格,發現了什嗎?沒有任何反應,明明雙擊了嗎,為啥呢?這是因為DataGrid把這個雙擊操作分解了,分為兩個單擊,第一個使該儲存格獲得游標,第二個為單擊事件,所以你的雙擊就沒有反應了,所以我們要做的就是把這個動作當作雙擊事件來處理,這樣就達到我們的目的了。所以捕獲一個雙擊事件就要做三件事。下面是一段代碼。

第一步:

private void dgRole_DoubleClick(object sender,System.EventArgs e)

//dgRole為DataGrid



{

this.frmRoleRightShow(); //我們雙擊要做的事

}

第二步:

private void TextBox_DoubleClick(object sender,System.EventArgs e)

{

this.frmRoleRightShow();

}

第三步:

DateTime gridMouseDownTime;

private void dgRole_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)

{

gridMouseDownTime=DateTime.Now; //紀錄時間

}

private void TextBox_MouseDown(object sender,MouseEventArgs e)

{

if(DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))

//如果兩次單擊的時間小於系統的雙擊時間,我們就把它認為是雙擊操作

{

this.frmRoleRightShow();

}

}

三 怎樣取某一個儲存格的值?一行代碼,如下:

String strRole=dgRole[row,column].ToString();

以上是我通過看csdn上的貼子和在實踐中總結出來的,如果你對DataGrid的使用有什麼心得的話,不妨把它寫出來,與大家分享。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。