2016-03-13 55 views
-1
public void Button_Click(object sender, RoutedEventArgs e) 
    { 
     TextBlock authorText = new TextBlock(); 
     authorText.Text = "Saturday Morning"; 
     authorText.FontSize = 12; 
     authorText.FontWeight = FontWeights.Bold; 
     authorText.PreviewMouseDown += new MouseButtonEventHandler(test1); 
     authorText.Visibility = System.Windows.Visibility.Collapsed; 

     Grid.SetColumn(authorText, 0); 

     sp_s.Children.Add(authorText); 
    } 


void sampleDropDown(object sender, RoutedEventArgs e) 
    { 

    } 

我想能夠訪問sampleDropDown事件處理程序內的authorText對象。 將對象聲明移到Button_Click方法範圍之外不是一個有效的解決方案,因爲我需要每次單擊一個按鈕就創建一個新對象。如何將對象傳遞給c#中的事件處理程序?

+0

通常'RoutedEventArgs'被擴展爲這種情況,但是在聲明爲實例變量(至少在這種情況下)沒有任何傷害。我也沒有看到'sampleDropDown'在你的情況下被調用_explicitly_,我會建議爲這種情況做類變量。 –

+0

什麼是'sampleDropDown'處理程序,它在哪裏分配? – Servy

回答

0

我需要創建一個新的對象有一個按鈕

如果你真的需要一個新的對象的每一次點擊,你仍然可以保持在類級別集合中的每個對象的引用。然後,在每個Button_Click處理程序中創建一個新對象並將其添加到列表中。

List<TextBlock> authorTextList = new List<TextBlock>(); 

public void Button_Click(object sender, RoutedEventArgs e) 
{ 
    TextBlock authorText = new TextBlock(); 
    authorTextList.Add(authorText); 

    /// ... 
} 

void sampleDropDown(object sender, RoutedEventArgs e) 
{ 
    /// ... access List objects here as desired 
} 

但它看起來像你可能已經在你的authorText對象列表:

sp_s.Children.Add(authorText); 

authorText的引用在sp_s.Children舉行。除非在sampleDropDown()處理程序中需要它之前刪除引用,否則可以在那裏訪問它。

相關問題