已经知道一个控件的名称,如何获取它的句柄?

o1o 2006-03-01 11:16:25
已经知道图片控件的名称(例如"S_192_168_0_138_3A_4D")
如何取得该控件?
就是想根据图片控件的名称更改控件的一些属性,非常的急,在线等,简单问题,得到答案马上结贴.
...全文
182 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxdl1981 2006-03-01
  • 打赏
  • 举报
回复
不用获取句柄(Handle)
void Control FindControl(string ctrlName)
{
foreach (Control ctrl in this.Controls) {
if (ctrl.Name == ctrlName))
return ctrl;
}
return null;
}

不过如果你的控件不是只接放在窗体上的(如 放在窗体内的另一个Panel中),就要这样了:

void Control FindControl(Control parent, string ctrlName)
{
foreach (Control ctrl in parent.Controls) {
if (ctrl.Name == ctrlName))
return ctrl;
else
{
Control searched = FindControl(ctrl, ctrlName);
if(searched != null) return searched;
}
}
return null;
}
sxlfybb 2006-03-01
  • 打赏
  • 举报
回复
//纠正一下

private IntPtr hwnd; //查找结果

private void FindSubControl(Control.ControlCollection con)
{
foreach (Control control in con)
{
if (control.GetType().ToString() == "System.Windows.Forms.PictureBox")
{
if (control.Name == "xxx")
{
this.hwnd = control.Handle; //如果已找到即赋句柄
return;
}
}
else if (control.HasChildren) //如果当前不是,并且有子控件继续查找
FindSubControl (control.Controls);
}
}

private void button1_Click(object sender, System.EventArgs e)
{
FindSubControl( this.Controls ); //开始查找
}
sxlfybb 2006-03-01
  • 打赏
  • 举报
回复
private IntPtr hwnd; //查找结果

private void FindSubControl(Control.ControlCollection con)
{
foreach (Control control in con)
{
if (control.GetType().ToString() == "System.Windows.Forms.PictureBox")
{
this.hwnd = control.Handle; //如果已找到即赋句柄
}
else if (control.HasChildren)
FindSubControl (control.Controls);
}
}

private void button1_Click(object sender, System.EventArgs e)
{
FindSubControl( this.Controls );
}
idda 2006-03-01
  • 打赏
  • 举报
回复
foreach (Control ctr in this.Controls) {
if (ctr.Name == "YourControlName")
return ctr;
}
lidong6 2006-03-01
  • 打赏
  • 举报
回复
for (int i=0;i<this.Controls.Count;i++)
{
if (this.Controls[i].Name=="XXX")
{
PictureBox p=(PictureBox)this.Controls[i];
...
}
}
李洪喜 2006-03-01
  • 打赏
  • 举报
回复
使用foreach在controls内递归遍历吧。
o1o 2006-03-01
  • 打赏
  • 举报
回复
进程内的,遍历主窗体的Controls集合的方法是什么样的,请举个例子,非常的急啊.
其实简单地说就是代码生成了很多个图片控件,每个控件我都定义了一个不同的名称,现在想根据这个名称更改该控件的属性.
wxdl1981 2006-03-01
  • 打赏
  • 举报
回复
如果是进程内,只要遍历主窗体的Controls集合就行了.
如果是进程外,就要调用API函数FindWindow()了
心情解码 2006-03-01
  • 打赏
  • 举报
回复
:)


--

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧