如何在c#中调用此方法
本文关键字:调用 此方法 | 更新日期: 2023-09-27 17:59:01
如何从其他地方调用此方法?
private void AssortDatagrid_LoadRows(object sender, Microsoft.Windows.Controls.DataGridRowEventArgs e)
{
if (ValidTill.SelectedIndex >= 0)
{
DataRowView rowContext = e.Row.DataContext as DataRowView;
string item = rowContext.Row["Срок годности"].ToString();
DateTime date;
if ((DateTime.TryParseExact(item, "dd'.'MM'.'yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date)) && (rowContext != null))
{
if (date.Date <= dt.Date)
{
try
{
e.Row.Background = new BrushConverter().ConvertFromString(rowColor) as SolidColorBrush;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
}
else // когда не может парсировать дату
{
}
}
}
我想在这里称之为:
private void workForce_DoWork(object sender, DoWorkEventArgs e)
{
AssortDatagrid_LoadRows(object sender, Microsoft.Windows.Controls.DataGridRowEventArgs e)
}
可以叫它吗?让我解释一下我在做什么。我想在加载行时调用弹出窗口,在弹出窗口中我有圆形进度条作为gif动画。我正在更改那些有效日期即将到来的项目的行背景。
对事件处理程序没有任何限制,使它们不可调用。它们具有与任何其他方法组相同的可访问性修饰符和Invocation规则。因此,您可以像调用任何其他方法一样调用处理程序,可选地传递具有非null值的参数:
AssortDatagrid_LoadRows(null, null);
更新
收到您的评论后:
"调用线程无法访问此对象,因为线程拥有它。"
这似乎是一个调用问题。。。实际上看起来是一个WPF调用。
请参阅Dispatcher。调用
在这种情况下。。。
this.Dispatcher.Invoke(new Action(()=>AssortDatagrid_LoadRows(null, null))
虽然这应该可以解决错误。。。Servy说得很好。这种类型的工作可以从UI线程中卸载。把它推给后台工作人员。我离题了。。。我们将偏离原来的问题。
您可以像调用任何其他方法一样调用事件处理程序,但更好的方法是重构代码,并将事件处理程序的内容提取为普通方法(带有所需参数)。然后在两个位置(事件处理程序和要调用事件处理程序的第二个位置)调用该方法。