在C#中创建了一个窗口(Form1 frm1=new Form1()),但是没有显示Show()或ShowDialog(),这是我们可以调用这个窗口中的有关函数OpenSceneFile(String sFilePath),但是这个窗口是不可见的,窗口的Load的事件也没有被触发,此时如果我们在Load事件中对某些变量进行初始化(m_fileProcesor=new SceneFileProcessor()),而OpenSceneFile函数要运行的前提是m_fileProcessor被初始化了,那么这时候OpenSceneFile()函数肯定会出错。
我们在VC中new一个窗口,之后如果不调用Create函数,那么WM_CREATE也不会被触发,但是我们在VC中的习惯一般是new之后,直接Create(),如果我们不希望窗口显示,只要传递一些参数即可:窗口可以被创建,但是不显示处来。
C#中如果new之后不调用Show,那么Load事件就不会被触发,那么OnFormLoad中的一些初始化代码就不能被执行。我们确实有一些情况,希望窗口被创建,Load事件被执行,但是窗口本身又不可见,在C#中不知是否有解决办法。
在对Form本身无法控制的情况下,即在窗口没有被Show的情况下,我们就行使用它,这时候,不用把一些必须的代码初始化放到OnFormLoad()事件处理函数中,单独写一个初始化函数,在必要的时候进行调用即可。