簡體   English   中英

如何在C#中調用此方法?

[英]How to call this method in c#?

如何從另一個地方調用此方法?

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動畫。 我正在更改有效日期即將到來的那些項目的行背景。

對於使事件處理程序不可調用的事件處理程序沒有任何限制。 它們具有與其他任何方法組相同的可訪問性修飾符和調用規則。 因此,您可以像其他任何方法一樣調用處理程序,可以選擇傳遞帶有非null值的參數:

AssortDatagrid_LoadRows(null, null);

更新
收到您的評論后:

“調用線程無法訪問該對象,因為其他線程擁有它。”

這似乎是一個調用問題……實際上看起來是WPF調用。

請參閱Dispatcher.Invoke

在這種情況下,...

this.Dispatcher.Invoke(new Action(()=>AssortDatagrid_LoadRows(null, null))

盡管這可以解決錯誤,但是服務非常重要。 此類工作因此可以從UI線程中卸載。 將其推到BackGroundWorker上 我離題了……我們正要切合原來的問題。

您可以像調用其他任何方法一樣調用事件處理程序,但是更好的方法是重構代碼並提取事件處理程序的內容作為常規方法(帶有必需的參數)。 然后在兩個位置(事件處理程序和您要調用事件處理程序的第二個位置)調用該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM