本文主要是介绍c#中获取控件窗体句柄,获取窗体等的一些操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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;
}
这篇关于c#中获取控件窗体句柄,获取窗体等的一些操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!