C# WinForms中OpenFileDialog的FileOk事件未触发求助
问题原因与解决方法
核心问题
你在button1_Click里新建了一个局部的OpenFileDialog实例,但这个实例并没有绑定FileOk事件处理方法;而你写的openFileDialog1_FileOk方法,是对应设计器中拖入的openFileDialog1控件的,但代码里根本没用到那个设计器生成的实例,自然事件不会触发。
两种解决方式
方式一:使用设计器生成的OpenFileDialog控件
如果你的Form里已经通过设计器拖入了openFileDialog1控件,修改button1_Click方法,直接调用已有实例的ShowDialog(),不需要重新new:
private void button1_Click(object sender, EventArgs e) { // 直接用设计器生成的openFileDialog1,事件已在设计器中绑定 openFileDialog1.ShowDialog(); }
注:如果之前没在设计器里绑定事件,需要在Form构造函数中手动添加绑定:
public Form1() { InitializeComponent(); // 手动绑定事件 openFileDialog1.FileOk += openFileDialog1_FileOk; }
方式二:给局部实例手动绑定事件
如果不想用设计器控件,坚持在代码里new实例,需要给这个局部实例绑定FileOk事件:
private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); // 绑定事件处理方法 openFileDialog1.FileOk += openFileDialog1_FileOk; openFileDialog1.ShowDialog(); }
额外提示
你也可以通过ShowDialog()的返回值直接判断用户是否选择了文件,无需依赖FileOk事件:
private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); if (openFileDialog1.ShowDialog() == DialogResult.OK) { label1.Text = "Dosya: " + openFileDialog1.FileName; } }
内容的提问来源于stack exchange,提问作者Doruk Han
相关产品推荐
相关产品推荐

