修复使用user32.dll的第三方控件
public partial class Form1 : Form
{
TheForm theForm;//empty form
public Form1()
{
InitializeComponent();
theForm = new TheForm();
}
internal const int SWP_SHOWWINDOW = 0x0040;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern int ShowWindow(IntPtr hWnd, short cmdShow);
private void button1_Click(object sender, EventArgs e)//shows theForm when it wants to
{
ShowWindow(theForm.Handle, SWP_SHOWWINDOW);
}
private void button2_Click(object sender, EventArgs e)//shows theForm always
{
theForm.Show();
}
}
为什么在调用user32 ShowWindow之后,大多数时候窗口“陷入困境”? 它捕获失去焦点和处置,但不捕获鼠标事件而不自行绘制。
答案 0 :(得分:1)
我不是专家,但我认为您需要通过在按钮单击事件处理程序方法之外调用Show()方法来显示您的表单。如果没有形式可以查看,则无法单击按钮来显示表单。
我不确定是否有理由在C#中使用user32.dll来制作winforms应用程序。因为这是由C#为你完成的,所以说话的方式。
您需要做的就是允许visual studio在拖放窗体设计器中为您创建表单代码。然后,为了显示和使用您的表单而不为Main()方法创建新的源文件,只需在生成的代码中编写Main()方法。
关于使用Windows窗体设计器的一篇很棒的文章。
http://msdn.microsoft.com/en-us/library/360kwx3z(v=vs.90).aspx