欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)改變DataGrid某一行和單元格顏色的方法

 更新時(shí)間:2014年09月12日 10:59:28   投稿:shichen2014  
這篇文章主要介紹了C#實(shí)現(xiàn)改變DataGrid某一行和單元格顏色的方法,主要涉及DataGrid控件的添加與使用、數(shù)據(jù)源的綁定、單元格與行的獲取等操作。需要的朋友可以參考下

本文所述實(shí)例主要實(shí)現(xiàn)WPF項(xiàng)目中C#改變DataGrid某一行和單元格顏色的功能。分享給大家供大家參考。具體方法如下:

如果要改變DataGrid某一行的顏色、高度,以及某個(gè)單元格的顏色、單元格字體的顏色,就必需取到datagrid的一行和一行的單元格,通過查找相關(guān)資料及測試總結(jié)出如下實(shí)例代碼,現(xiàn)記錄下來便于大家參考使用。

1、前臺(tái)WPF界面添加一個(gè)DataGrid控件,并添加兩列(便于編寫,達(dá)到目的即可)

<DataGrid AutoGenerateColumns="False" Height="642" HorizontalAlignment="Left" Margin="131,57,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="799" CanUserAddRows="True" LoadingRow="dataGrid1_LoadingRow" GridLinesVisibility="None">
  <DataGrid.ColumnHeaderStyle >
 <Style TargetType="DataGridColumnHeader">
   <Setter Property="Height" Value="50"></Setter>
 </Style>
  </DataGrid.ColumnHeaderStyle>
  <DataGrid.Columns>
 <DataGridTextColumn Header="id" Binding="{Binding Path=id}" ElementStyle="{StaticResource dgCell}"></DataGridTextColumn>
 <DataGridTextColumn Header="name" Binding="{Binding Path=name}" ElementStyle="{StaticResource dgCell}"></DataGridTextColumn>
  </DataGrid.Columns>
</DataGrid>

2、創(chuàng)建一個(gè)數(shù)據(jù)源并綁定,此處是創(chuàng)建一個(gè)datatable

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id", typeof(int)));
dt.Columns.Add(new DataColumn("name", typeof(string)));

for (int i = 0; i < 6; i++)
{
 DataRow dr = dt.NewRow();
 if (i == 3)
 {
   dr["id"] = DBNull.Value;
   dr["name"] = DBNull .Value ;
   dt.Rows.Add(dr);
 }
 else
 {
   dr["id"] = i;
   dr["name"] = "tom" + i.ToString();
   dt.Rows.Add(dr);
 }
}

this.dataGrid1.CanUserAddRows = false;
this.dataGrid1.ItemsSource = dt.DefaultView;

3、獲取單行

for (int i = 0; i < this.dataGrid1.Items.Count; i++)
{
 DataRowView drv = dataGrid1.Items[i] as DataRowView;
 DataGridRow row = (DataGridRow)this.dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);

 if (i == 2)
 {
   row.Height = 50;
   row.Background = new SolidColorBrush(Colors.Blue);
   drv["id"] = 333;
 }

 if (drv["id"] == DBNull.Value)
 {
   row.Background = new SolidColorBrush(Colors.Green);
   row.Height = 8;
 }
}

4、獲取單元格

for (int i = 0; i < this.dataGrid1.Items.Count; i++)
{
 DataRowView drv = dataGrid1.Items[i] as DataRowView;
 DataGridRow row = (DataGridRow)this.dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);
         if (i == 4)
 {
   DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row);
   DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(1);
   cell.Background = new SolidColorBrush(Colors.Red);
 }
}

public static T GetVisualChild<T>(Visual parent) where T : Visual
{
  T childContent = default(T);
  int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
  for (int i = 0; i < numVisuals; i++)
  {
 Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
 childContent = v as T;
 if (childContent == null)
 {
   childContent = GetVisualChild<T>(v);
 }
 if (childContent != null)
 {
   break;
 }
  }

  return childContent;
}

5、如果在項(xiàng)目中把創(chuàng)建數(shù)據(jù)源、綁定數(shù)據(jù)源、對(duì)datagrid進(jìn)行操作(改變行的顏色、高度)都寫在一個(gè)事件中,其中在取datagrid的row時(shí)出現(xiàn)錯(cuò)誤:未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例。

解決的方法:

//創(chuàng)建數(shù)據(jù)源、綁定數(shù)據(jù)源
    
if (!Window.GetWindow(dataGrid1).IsVisible)
{
 Window.GetWindow(dataGrid1).Show();
}
dataGrid1.UpdateLayout();

//可以獲取某一行、某一行的單元格

相信本文所述對(duì)大家的C#程序設(shè)計(jì)有一定的借鑒作用。

相關(guān)文章

  • C#實(shí)現(xiàn)Excel導(dǎo)入sqlite的方法

    C#實(shí)現(xiàn)Excel導(dǎo)入sqlite的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Excel導(dǎo)入sqlite的方法,是C#程序設(shè)計(jì)中非常重要的一個(gè)實(shí)用技巧,需要的朋友可以參考下
    2014-09-09
  • 在Framework 4.0中:找出新增的方法與新增的類(二)

    在Framework 4.0中:找出新增的方法與新增的類(二)

    為什么動(dòng)態(tài)加載程序集無法找出Framework 4.0 和Framwork2.0 新增的方法和類
    2013-05-05
  • C#實(shí)現(xiàn)寫系統(tǒng)日志的方法

    C#實(shí)現(xiàn)寫系統(tǒng)日志的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)寫系統(tǒng)日志的方法,涉及C#針對(duì)系統(tǒng)日志的創(chuàng)建、寫入及刪除等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#畫筆Pen繪制光滑模式曲線的方法

    C#畫筆Pen繪制光滑模式曲線的方法

    這篇文章主要介紹了C#畫筆Pen繪制光滑模式曲線的方法,涉及C#圖形繪制畫筆Pen相關(guān)屬性的設(shè)置技巧,需要的朋友可以參考下
    2015-06-06
  • C#實(shí)現(xiàn)簡單的五子棋游戲

    C#實(shí)現(xiàn)簡單的五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡單的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C#使用Redis的基本操作

    C#使用Redis的基本操作

    這篇文章主要介紹了C#使用Redis的基本操作,需要的朋友可以參考下
    2017-06-06
  • 基于C#實(shí)現(xiàn)獲取本地磁盤目錄

    基于C#實(shí)現(xiàn)獲取本地磁盤目錄

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)獲取本地磁盤目錄的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • 利用C#如何給PDF文檔添加文本與圖片頁眉

    利用C#如何給PDF文檔添加文本與圖片頁眉

    頁眉常用于顯示文檔的附加信息,我們可以在頁眉中插入文本或者圖形,例如,頁碼、日期、公司徽標(biāo)、文檔標(biāo)題、文件名或作者名等等。那么我們?nèi)绾我跃幊痰姆绞教砑禹撁寄兀窟@篇文章主要介紹了利用C#如何給PDF文檔添加文本與圖片頁眉的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C#字符集編碼的使用及說明

    C#字符集編碼的使用及說明

    這篇文章主要介紹了C#字符集編碼的使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# Struct的內(nèi)存布局問題解答

    C# Struct的內(nèi)存布局問題解答

    這篇文章介紹了C# Struct的內(nèi)存布局問題解答,有需要的朋友可以參考一下
    2013-11-11

最新評(píng)論