我得到了一个带有控件的表单,我使用另一个应用程序。每次我显示窗口时,另一个应用程序加载缓慢启动它。 所以我提前加载了二级应用程序。我使用一个控制句柄作为参数,告诉应用程序如何使用句柄。 这第一次工作正常。当我关闭对话框(单击确定按钮,将对话框结果设置为ok)并再次打开它时,控制手柄发生了变化。
如何在对话框的两个载荷之间保持控制手柄相同?
public partial class ListForm : Form
{
FilterDialog filterDialog;
public ListForm()
{
InitializeComponent();
filterDialog = new FilterDialog(); //this is where i load my second form, wich i draw in
}
对话框我画了
public FilterDialog()
{
InitializeComponent();
string applicationlocation = @"...";
//set the argument
string hexvalue = btnImage.Handle.ToInt32().ToString("X8");
process.StartInfo.Arguments = "0x" + hexvalue;
process.StartInfo.FileName = applicationlocation;
process.StartInfo.UseShellExecute = false;
process.Start();
}
private void FilterDialog_Load(object sender, EventArgs e)
{
if (this.filter != string.Empty)
txtFilter.Text = filter;
}
答案 0 :(得分:1)
此代码似乎 :
class CustomHandleForm : Form
{
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
base.DestroyHandle();
}
protected override void DestroyHandle() { }
}
经过测试:
Form f = new CustomHandleForm();
f.Show();
var h1 = f.Handle;
f.Hide();
f.Show();
var h2 = f.Handle;
Trace.Assert(h1 == h2);