问题描述
- 关于c# winform wince的两个问题
-
最近用c#在wince5.0设备上开发了个winform小程序,期间遇到两个问题,折腾了好久,还是没解决。
问题1:关于OpenFileDialog.InitialDirectoryOpenFileDialog dlg = new OpenFileDialog(); dlg.InitialDirectory = Login.sFilePath; dlg.Filter = "txt files (*_out.txt)|*_out.txt"; 代码如上,如果加上第二句话(dlg.InitialDirectory = Login.sFilePath;),当执行到这句话的时候,dlg立马会被关闭。如果不加这句话,就能正常显示。
问题2:关于“stackoverflowexception”的问题
当弹出太多“MessageBox”时,会出现“stackoverflowexception”的异常。基于这个问题,现在处理的方法是:按键盘上的某个键,触发关闭MessageBox的事件,代码如下。下面这个函数,确定可以关闭MessageBox,但是,当弹出多个MessageBox时,还是会出现“stackoverflowexception”异常。
private void KillMessageBox()
{
IntPtr ptr = FindWindow(null, "title");
if (ptr != IntPtr.Zero)
{
PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
}基于以上两个问题:1.在wince系统下,OpenFileDialog如何设置初始的路径?;2.上面的代码,如何修改,才能避免出现“stackoverflowexception”异常?
解决方案
Login.sFilePath;的值是什么?是否为null
另一个问题,检查代码中是否有过深的递归,或者事件中又触发了新的事件
解决方案二:
关于OpenFileDialog.InitialDirectory,请参考:
https://technet.microsoft.com/zh-cn/magazine/system.windows.forms.filedialog.initialdirectory(VS.80).aspx
关于“stackoverflowexception”的问题
请设置一个全局变量,记录MessageBox的弹出状态,禁止弹出多个。