【问题标题】:reference and foreach loop on dataGriddataGrid 上的引用和 foreach 循环
【发布时间】:2015-05-24 13:26:59
【问题描述】:

我有 DataGridCheckBox 列。我希望通过按一个按钮来删除所有选中的行。 (我有删除的特殊功能) 我搜索如何做到这一点foreach 循环,我发现了这个 -

private void delete_Click(object sender, RoutedEventArgs e)
{
    foreach (DataGridViewRow row in gridDepartment.Rows)
    {
        if (Convert.ToBoolean(row.Cells[CheckBoxColumn1.Name].Value) == true)
        {
            // get row number
            remove(list.ElementAt(rowNumber));
        }
    }
}

但是,DataGridViewRowRowsCheckBoxColumn1CellsValue 仍然是黑色的。 我尝试添加using System.Windows.Forms;DataGridViewRow chenge 他的颜色,但所有MessageBoxUserControl 显示错误:

MessageBox 是 System.Windows.MessageBox 之间的模糊引用 和 System.Windows.Forms.MessageBox

这些是我的参考:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;

我能做什么?谢谢。

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    迭代后修改行集合听起来不是一个好计划。我假设你没有在这里利用数据绑定,所以请改用这篇文章中的建议 (Delete Multiple rows from datagridview)。

    关于引用只是使 MessageBox 引用消除歧义

    using MessageBox = System.Windows.MessageBox;
    

    或显式调用它

    System.Windows.MessageBox.Show(...)
    

    更新

    问题是不同的。您有 System.Windows.Controls.DataGrid 并且您正在尝试调整一些 System.Windows.Forms.DataGridView 代码来适应它。这两者完全不同,您的代码将无法正常工作。

    您可以查看如何使用 WPF DataGrid 和数据绑定(例如http://wpftutorial.net/DataGrid.html)。 WPF 强烈依赖数据绑定,因此您通常不应访问网格项(DataGrid.Items 属性)以进行 CRUD 操作并直接对 DataGrid.ItemsSource 执行相应的操作,如示例所示。

    【讨论】:

    • 谢谢!它的帮助。但是,“.Rows”和“.Cells”和“.Value”仍然无法识别,你知道我该怎么做才能改变它吗?
    • DataGridViewRow 及其所有特定子属性类型都是 System.Windows.Forms 的成员。
    • DataGridViewRow 更改是颜色',但所有其他都没有。并且“.Rows”发送错误:“System.Windows.Controls.DataGrid”不包含“Rows”的定义,并且没有扩展方法“Rows”接受“System.Windows.Controls.DataGrid”类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)
    • 您的问题不同。您有 System.Windows.Controls.DataGrid 并且您正在尝试调整一些 System.Windows.Forms.DataGridView 代码来适应它。这两者完全不同,您的代码将无法正常工作。您是否使用任何与 DataGrid 的绑定?如何添加要删除的行?
    • 有一个文件在第一次运行时是空的,用户添加了东西。与 DataGrid 的绑定是文件中的列表之一。我希望通过 CheckBox 列,该函数将知道要删除哪一行。我刚刚学习了 C# 和 WPF,所以如果我有一个基本的错误,我很抱歉,我希望我能清楚地解释自己。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多