问题遇到的现象和发生背景
有一个方法里面创建了一个窗体,并创建了一个按钮,按钮有一个点击事件,我调用这个方法运行出一个窗口后点击按钮通过断点发现按钮点击事件后的代码根本没有执行,这是为什么呢,该怎么解决呢?
用代码块功能插入代码
public static (int imageWidth, int imageHeight) TakeTheSizeOfTheImage(string imageFilePath)
{//试运行代码,如果没有问题运行try代码块内容
try
{//实例化一个图像类,并命名为:图像,并赋值为从图像路径打开的图像
using (Image image = Image.FromFile(imageFilePath))
{// 声明一个整数型局部变量,名字是图片宽,并赋值为获取到的图片的宽
int imageWidth = image.Width;
//声明一个整数型局部变量,名字是图片高,并赋值为获取到的图片的高
int imageHeight = image.Height;
//返回图片的宽和图片的高
return (imageWidth, imageHeight);
}
}//有异常,运行catch代码块内容,errorMessage参数是错误文本,用来存储错误内容
catch (Exception errorMessage)
{//弹出一个窗口名称是温馨提示的窗口,内容是:获取图片数据失败,请联系公司技术部人员,联系方式:18935139074,换行,错误内容
MessageBox.Show("获取图片数据失败,请联系公司技术部人员,联系方式:18935139074" + "\r\n" + errorMessage.Message + "\r\n" + errorMessage, "温馨提示");
//抛出异常停止执行方法
throw;
}
}
public static bool CreateASuitableNewWindowWithAnImageBoxInsideItBasedOnTheObtainedImageSize(string imageFilePath)
{
//声明一个推断类型局部变量,并命名为:大小,并赋值为:图片操作类中的打开一个图片并获取图片的大小(宽和高)的返回值
var size = ImageOperation.TakeTheSizeOfTheImage(imageFilePath);
//声明一个整形局部变量,并命名为宽,并赋值为获取到的图片的宽
int Width = size.imageWidth;
//声明一个整形局部变量,并命名为高,并赋值为获取到的图片的高
int Height = size.imageHeight;
//声明一个布尔型的局部变量,并命名为:结果,并命名为结果
bool value=false;
//实例化一个新窗体,并命名为:窗体
Form form = new Form()
{//设置窗体的大小为:(获取到的图片的宽+50,获取到的图片的高+100)
Size = new Size(Width + 50, Height + 150),
//设置窗体的窗体名为:您选择的图片是:
Text = "您选择的图片是:",
};//将窗体显示出来
form.Show();
//实例化一个新图片框,并命名为:图片框
PictureBox pictureBox = new PictureBox()
{ //设置图片框的大小为:(获取到的图片的宽+20,获取到的图片的高+20)
Size = new Size(Width + 20, Height + 20),
//设置图片框的位置为:(10,10)
Location = new Point(10, 10),
//设置图片框的图片为获取到的图片
Image = Image.FromFile(imageFilePath),
}; //将图片框添加进窗体中
form.Controls.Add(pictureBox);
//声明一个布尔型的局部变量,命名为:取消选择按钮点击,并赋值为:假
bool deselectButtonClicked = false;
//实例化一个新的按钮,并命名为:取消按钮
Button deselectButton = new Button()
{ //设置确认按钮的大小为:(获取到的图片的宽-50的值再除以2,50)
Size = new Size((Width) / 2, 50),
//设置窗体的位置为:(10,10)
Location = new Point(((Width) / 2) + 20, Height + 30),
//设置按钮的显示名为:取消选择
Text = "取消选择",
};//为取消选择按钮添加一个点击事件
deselectButton.Click += (sender, args) =>
{//声明一个新的对话框返回结果枚举变量,命名为结果,并赋值为:打开一个带确认、取消的消息框,内容是:确定选择当前文件吗,窗体名是:温馨提示
DialogResult result = MessageBox.Show("确定取消选择当前文件吗", "温馨提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
//判断用户点的是否是确认按钮
if (result == DialogResult.OK)
{//如果用户点的是确认按钮,将局部变量结果的值赋值为:真
value = true;
//将局部变量取消选择按钮点击重新赋值为:真
deselectButtonClicked = true;
}--------------------------------就是这里我通过断点发现当取消选择按钮点击后就不往下执行了
};
//将取消选择按钮添加进窗体中
form.Controls.Add(deselectButton);
//声明一个布尔型的变量,并命名为:确认按钮点击,并赋值为:假
bool confirmButtonClicked=false;
//实例化一个新的按钮,并命名为:确认按钮
Button confirmButton = new Button()
{ //设置确认按钮的大小为:(获取到的图片的宽-50的值再除以2,50)
Size = new Size((Width) / 2, 50),
//设置窗体的位置为:(10,10)
Location = new Point(10, Height + 30),
//设置按钮的显示名为:确认选择
Text = "确认选择",
};//为确认选择按钮添加一个点击事件
confirmButton.Click += (sender, args) =>
{//声明一个新的对话框返回结果枚举变量,命名为结果,并赋值为:打开一个带确认、取消的消息框,内容是:确定选择当前文件吗,窗体名是:温馨提示
DialogResult result = MessageBox.Show("确定选择当前文件吗", "温馨提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
//判断用户点的是否是确认按钮
if (result == DialogResult.OK)
{//如果用户点的是确认按钮,将局部变量结果的值赋值为真
value = true;
//将局部变量确认选择按钮点击重新赋值为真
confirmButtonClicked = true;
//打开一个消息框,内容是:选择文件成功!!!,窗体名是:温馨提示
MessageBox.Show("选择文件成功!!!", "温馨提示");
}
};//将确认选择按钮添加进窗体中
form.Controls.Add(confirmButton);
//判断用户是否点击了确认按钮或者取消按钮
if (confirmButtonClicked == false || deselectButtonClicked == false)
{//如果用户既没有点击确认按钮,也没有点击取消按钮,那么为窗体添加新的关闭事件,并调用关于窗口操作类中的禁止用户关闭窗体方法
form.FormClosing += new FormClosingEventHandler(FromOperation.QuietUserClosesForm);
}//如果用户点击了确认按钮或者取消按钮
else
{//为窗体添加新的关闭事件,并调用关于窗口操作类中的允许用户关闭窗体方法
form.FormClosing += new FormClosingEventHandler(FromOperation.AllowCustomersToCloseForms);
//关闭窗体
form.Close();
}
//返回结果的值
return value;
}
运行结果及详细报错内容
取消选择按钮点击后后续代码不执行
我想要达到的结果
取消选择按钮点击后后续代码还要执行