【问题标题】:Using Tag property to target Object c#使用 Tag 属性来定位对象 c#
【发布时间】:2012-08-06 21:03:47
【问题描述】:

我正在尝试创建一个 on 事件操作,它可以重复用于许多对象。 为此,我将目标对象的名称存储在 Tag 属性中。 所以在事件被触发时:

private void ShowDeleteButton(object sender, System.Windows.Input.MouseEventArgs e)
{
    Duration TimeToTake = new Duration(new TimeSpan(0,0,0,0,300));
    DoubleAnimation ShowButton = new DoubleAnimation(0, 104, TimeToTake);
    DoubleAnimation HideButton = new DoubleAnimation(104, 0, TimeToTake);
    (sender as Rectangle).Tag.BeginAnimation(Button.WidthProperty, ShowButton);
}

显然使用 (sender as button).Tag 作为对象的名称将不起作用。那么如何将 tag 属性转换为目标对象的引用呢?

注意这是 WPF

谢谢

【问题讨论】:

    标签: c# wpf events tags


    【解决方案1】:

    对于 WPF,请使用 FindName:

    var oControl = this.FindName((string)(sender as Button).Tag);
    if (oControl != null)
    {
        (Rectangle)oControl.BeginAnimation...
    }
    

    对于 WinForms,您可以通过存储在 Tag 中的名称找到控件:

            

    var aoControls = this.Controls.Find((string)(sender as Button).Tag, true);
    if ((aoControls != null) && (aoControls.Length != 0))
    {
        (Rectangle)aoControls[0].BeginAnimation...
    }
    

    【讨论】:

      【解决方案2】:

      您指的是UIElement.BeginAnimation,并且该发件人可以是任何UIElement?如果是这样,那么你可以简单地这样做:

      ((UiElement)sender).BeginAnimation(Button.WidthProperty, ShowButton);
      

      【讨论】:

        猜你喜欢
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 2011-08-31
        • 1970-01-01
        相关资源
        最近更新 更多