zoukankan      html  css  js  c++  java
  • c# WPF DataGrid 获取选中单元格信息

     private void Dg_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
            {
                Console.WriteLine("start");
                foreach (DataGridCellInfo info in dg.SelectedCells)
                {
                    FrameworkElement element = info.Column.GetCellContent(info.Item);
                    string str = ((TextBlock)info.Column.GetCellContent(info.Item)).Text;
                    Console.WriteLine(str);
                }
            }
     private void Button_Click(object sender, RoutedEventArgs e)
            {
                DataGridCellInfo info = new DataGridCellInfo(dg.Items[0], dg.Columns[2]);
                Console.WriteLine("start");
                FrameworkElement element = info.Column.GetCellContent(info.Item);
                string str = ((TextBlock)info.Column.GetCellContent(info.Item)).Text;
                Console.WriteLine(str);
             
            }
       private void Button_Click(object sender, RoutedEventArgs e)
            {
                DataGridCell cell = dg.GetCell(1, 2);
                TextBlock tb = cell.Content as TextBlock;
                Console.WriteLine(tb.Text);
            }
    
        public static class DataGridExtension
        {
            /// <summary>
            /// 获取DataGrid控件单元格
            /// </summary>
            /// <param name="dataGrid">DataGrid控件</param>
            /// <param name="rowIndex">单元格所在的行号</param>
            /// <param name="columnIndex">单元格所在的列号</param>
            /// <returns>指定的单元格</returns>
            public static DataGridCell GetCell(this DataGrid dataGrid, int rowIndex, int columnIndex)
            {
                DataGridRow rowContainer = dataGrid.GetRow(rowIndex);
                if (rowContainer != null)
                {
                    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
                    if (cell == null)
                    {
                        dataGrid.ScrollIntoView(rowContainer, dataGrid.Columns[columnIndex]);
                        cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
                    }
                    return cell;
                }
                return null;
            }
    
            /// <summary>
            /// 获取DataGrid的行
            /// </summary>
            /// <param name="dataGrid">DataGrid控件</param>
            /// <param name="rowIndex">DataGrid行号</param>
            /// <returns>指定的行号</returns>
            public static DataGridRow GetRow(this DataGrid dataGrid, int rowIndex)
            {
                DataGridRow rowContainer = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);
                if (rowContainer == null)
                {
                    dataGrid.UpdateLayout();
                    dataGrid.ScrollIntoView(dataGrid.Items[rowIndex]);
                    rowContainer = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);
                }
                return rowContainer;
            }
    
            /// <summary>
            /// 获取父可视对象中第一个指定类型的子可视对象
            /// </summary>
            /// <typeparam name="T">可视对象类型</typeparam>
            /// <param name="parent">父可视对象</param>
            /// <returns>第一个指定类型的子可视对象</returns>
            public static T GetVisualChild<T>(Visual parent) where T : Visual
            {
                T child = default(T);
                int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
                for (int i = 0; i < numVisuals; i++)
                {
                    Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                    child = v as T;
                    if (child == null)
                    {
                        child = GetVisualChild<T>(v);
                    }
                    if (child != null)
                    {
                        break;
                    }
                }
                return child;
            }
        }
  • 相关阅读:
    JavaScript经典效果集锦之五(转)
    消息队列函数
    ipcs查看消息队列命令
    sizeof的解析
    【转】使用Reporting Services制做可折叠的报表
    【转】Hibernate动态条件查询(Criteria Query)
    【Wonder原创】NHibernate调用存储过程
    【转】C# const和readonly的区别
    【转】人际关系经验
    winform只存在一个进程处理
  • 原文地址:https://www.cnblogs.com/aitong/p/11858618.html
Copyright © 2011-2022 走看看