簡體   English   中英

從發件人處獲取子控件內容

[英]Get child control content from sender

如何從發件人的孩子那里獲得價值?

Canvas上的MouseUp創建一個Grid

    private void ScrollViewer_MouseUp(object sender, MouseButtonEventArgs e)
    {
        Grid grid = new Grid();

        Label timeLabel = new Label();
            timeLabel.Content = "06:00"; //this could be anything
            timeLabel.Name = "TimeStart"

          grid.Children.Add(timeLabel);
            canvas.Children.Add(grid);
                grid.MouseDown += new MouseButtonEventHandler(ClickEvent);
    }

當用戶點擊已經存在的Grid ,我想要一個包含timeLabel.ContentMessageBox ,在這種情況下,“06:00”

這不起作用(我也嘗試過其他一些,結果相同)

    void ClickEvent(object sender, RoutedEventArgs e)
    {
        Grid test = (Grid)sender;
        Label label = (Label)test.FindName("TimeStart");
        MessageBox.Show(label.Content.ToString());
    }

錯誤

    An unhandled exception of type 'System.NullReferenceException' occurred in MissionControl M.exe

        Additional information: Object reference not set to an instance of an object.

您可以使用Registername作為標簽控件並提供名稱,然后使用FindName訪問它

  private void ScrollViewer_MouseUp(object sender, MouseButtonEventArgs e)
        {
             NameScope.SetNameScope(grid, new NameScope());
             Label timeLabel = new Label();
             timeLabel.Name = "label1";
             grid.RegisterName("label1", timeLabel);
            timeLabel.Content = "06:00";                
        }
        void ClickEvent(object sender, RoutedEventArgs e)
        {
            Grid test = (Grid)sender;
            if (test != null)
            {
                Label label = (Label)test.FindName("label1");
                MessageBox.Show(label.Content.ToString());
            }
    }

您為網格命名,但是您嘗試按名稱查找標簽。 選擇一個或另一個。 也許,命名標簽而不是網格是最有意義的。

你應該說出你的名字,然后是FindName

或者您可以使用第一個網格子項:

Grid test = (Grid)sender;
if(test != null)
{
      Label label = test.Children[0] as Lable;
      MessageBox.Show(label.Content.ToString());
}

暫無
暫無

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

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