本文共 1903 字,大约阅读时间需要 6 分钟。
1.Control.Handle 就是获取控件绑定到的窗口句柄。
2.control.IsHandleCreated 控件是否有与其关联的句柄
3.WinForm自定义函数FindControl实现按名称查找控件
|
4.判断窗体是否已打开
方式1:
foreach (Form frm in Application.OpenForms)
{ if (frm is youForm) { youForm.Activate(); youForm.WindowState = FormWindowState.Normal; return; } } Form youForm = new Form(); youForm.Show();方式2:
Form1 F1 ;
if(F1 == null || F1.IsDisposed) { F1 = new Form1(); F1.Show();//未打开,直接打开。 } else { F1.Activate();//已打开,获得焦点,置顶。 }5.通过名字寻找窗体
public
Form FindForm(
string
name)
{
foreach
(Form f
in
Application.OpenForms)
{
if
(f.Name == name)
return
f;
}
return
null
;
}
6.以下是代码中创建progressbar的实例
int count = 0;
private void button4_Click(object sender, EventArgs e) { Thread th = new Thread(() => { Form form = new Form(); form.Name="myForm"; form.Width = 200; form.Height = 20; form.ControlBox = false; //form.ShowInTaskbar = false; form.StartPosition = FormStartPosition.CenterScreen; ProgressBar pb = new ProgressBar(); pb.Dock = DockStyle.Fill; pb.Maximum = 100; pb.Minimum = 0; pb.Value = count; pb.BringToFront(); pb.Visible = true; pb.Parent = form; form.ShowDialog(); }); th.Start();for (int i = 0; i < 1000;i++ )
{ Thread.Sleep(5); count = Convert.ToInt32(i * 1.0 / 1000 * (100 - 0) + 0); Control control= FindForm("myForm"); if (control!=null&&control.Name == "myForm" && control.IsHandleCreated) { control.Invoke(new Action(() => { ProgressBar pb = control.Controls[0] as ProgressBar; pb.Value = count; })); } } th.Abort(); } public Form FindForm(string name) {foreach (Form f in Application.OpenForms)
{if (f.Name == name) return f;
}
return null;
}
转载地址:http://vzlws.baihongyu.com/