wpf中怎么查找控件啊

wpf中怎么查找控件啊,第1张

wpf由于大量使用模板,有时模板内的控件名称会不太方便查找,这时需要借助VisualTreeHelper和递归

public static T FindChild<T>(DependencyObject parent, string childName)

   where T : DependencyObject

{    

  if (parent == null) return null;

  T foundChild = null;

  int childrenCount = VisualTreeHelperGetChildrenCount(parent);

  for (int i = 0; i < childrenCount; i++)

  {

    var child = VisualTreeHelperGetChild(parent, i);

    // 如果子控件不是需查找的控件类型

    T childType = child as T;

    if (childType == null)

    {

      // 在下一级控件中递归查找

      foundChild = FindChild<T>(child, childName);

      // 找到控件就可以中断递归 *** 作 

      if (foundChild != null) break;

    }

    else if (!stringIsNullOrEmpty(childName))

    {

      var frameworkElement = child as FrameworkElement;

      // 如果控件名称符合参数条件

      if (frameworkElement != null && frameworkElementName == childName)

      {

        foundChild = (T)child;

        break;

      }

    }

    else

    {

      // 查找到了控件

      foundChild = (T)child;

      break;

    }

  }

  return foundChild;

}

调用方法是这样的:

TextBox foundTextBox = 

   UIHelperFindChild<TextBox>(ApplicationCurrentMainWindow, "myTextBoxName");

1,模糊查询、查询出所有来然后循环判断!

2,(控件类型)gridviewrows[行的索引]findcontrol("控件名称");

上例中:

Label lab1=(Label)GridView1Rows[0]FindControl("Label1");

lab1Text="测试成功";

补充:

没有什么函数吧!

直接select from tablName like %b%

检查查询出的结构如果行数>0则表示存在!

非要写函数就自己写一个吧!估计实质还是like模糊查询!

楼上说的不完全正确,documentgetElementsByTagName("input")获取的是所有<input>对象,里面包含text、password等等,

其实在其后再加一个类型判断就行了:

var inputObject = documentgetElementsByTagName("input");

for (var i=0; i<inputObjectlength; i++){

if ("text" == inputObject[i]type){

//相关 *** 作

}

}

以上就是关于wpf中怎么查找控件啊全部的内容,包括:wpf中怎么查找控件啊、如何判断一个字段中是否存在某字。 如何获取GridView中的控件、JS怎么获取父页面的所以相同类型的的控件(相同类型的控件id 和 name 都不相同)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9513057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存