user32 ShowWindow .net

时间:2012-11-16 04:49:30

标签: .net user32

修复使用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之后,大多数时候窗口“陷入困境”? 它捕获失去焦点和处置,但不捕获鼠标事件而不自行绘制。

1 个答案:

答案 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