You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中如何移除MainGrid的ReminderUR控件并刷新网格信息?

解决WPF MainGrid中ReminderUR控件的移除与刷新问题

问题根源

你之前调用MainGrid.Children.Remove(r)失败,是因为代码里的r是foreach循环内的局部变量——每次循环都会创建一个新的ReminderUR实例并添加到网格,但这个局部的r只在当前循环迭代中有效。后续你试图移除时使用的r,和已经添加到MainGrid里的控件实例根本不是同一个对象,自然无法成功移除。

解决方案:先清理旧控件,再重新加载

要实现网格信息的刷新,需要先移除所有已存在的ReminderUR控件,再重新调用patient_today()添加新数据。

步骤1:编写清理控件的代码

遍历MainGrid的Children集合,筛选出所有ReminderUR类型的控件并移除。注意不能直接在遍历原集合时修改,需要先将目标控件复制到临时列表:

// 清理所有ReminderUR控件
var remindersToRemove = MainGrid.Children.OfType<ReminderUR>().ToList();
foreach (var reminder in remindersToRemove)
{
    MainGrid.Children.Remove(reminder);
}

步骤2:重置计数器并重新加载数据

清理完成后,重置计数器a为0,再调用patient_today()重新添加最新的控件:

// 重置计数器
a = 0;
// 重新加载今日患者提醒
patient_today();

整合为刷新方法

可以把上述逻辑封装成一个方法,方便调用:

void RefreshPatientReminders()
{
    // 清理旧控件
    var remindersToRemove = MainGrid.Children.OfType<ReminderUR>().ToList();
    foreach (var reminder in remindersToRemove)
    {
        MainGrid.Children.Remove(reminder);
    }
    
    // 重置计数器并重新加载
    a = 0;
    patient_today();
}

之后只要调用RefreshPatientReminders(),就能完成MainGrid中提醒控件的刷新。

内容的提问来源于stack exchange,提问作者Behtash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:01:05