C#开发的WinForm程序运行时窗体不显示,编译无错未修改Program.cs
问题解决步骤
你遇到的窗体不显示且无报错的核心原因是窗体构造阶段抛出未捕获异常,被系统静默吞掉导致程序直接退出,可按以下步骤排查修复:
- 修正
OleDbDataAdapter的传参错误:你写的初始化代码把连接字符串放在了第一个参数、SQL语句放在第二个,该类构造函数要求第一个参数为查询SQL、第二个才是连接对象/连接字符串,传参顺序错误会直接触发初始化异常。 - 调整数据库相关对象的初始化时机,增加异常捕获:不要在类字段定义阶段就初始化数据库对象,这类初始化会在构造函数执行前运行,抛出的异常很容易被系统吞掉,调整后的代码参考如下:
namespace P1 { public partial class Form1 : Form { // 仅声明字段,暂不初始化 OleDbConnection con; OleDbDataAdapter adap; DataTable d2; DataSet d1; public Form1() { InitializeComponent(); try { // 放在构造函数内初始化,异常可被捕获 con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =d:\DDBS.mdb"); // 修正传参顺序:第一个是SQL,第二个是连接对象 adap = new OleDbDataAdapter("select * from Student", con); d2 = new DataTable(); d1 = new DataSet("Student"); } catch (Exception ex) { MessageBox.Show("初始化失败:" + ex.Message); } } // 其余原有代码保持不变即可 } }
- 检查项目运行位数:
Microsoft.Jet.OLEDB.4.0驱动仅支持32位运行,右键你的项目→选择「属性」→切换到「生成」选项卡,勾选「首选32位」,或者直接将目标平台设置为x86。 - 确认
d:\DDBS.mdb文件存在且可正常访问,没有被删除、移动或者损坏,可先单独打开Access文件验证Student表是否能正常读取。
内容的提问来源于stack exchange,提问作者Hoho Santa
相关产品推荐
相关产品推荐

