C#程序设计 问题解决与设计优化

本文解决了编程中常见的两个问题:一是文件被另一进程使用导致无法访问的错误,通过调整窗口关闭逻辑来解决;二是参数输入框为空时程序报错,采用默认值填充并计划增加数值判断和提示。

1. 出现”文件正在被另一进程使用,无法访问”

我写程序的时候出现这个错误:
无法将文件“obj\x86\Debug\shiwai.exe”复制到“bin\Debug\shiwai.exe”。文件“bin\Debug\shiwai.exe”正由另一进程使用,因此该进程无法访问此文件。

引发问题的原因:
我的程序设计的是在子窗口打开后将主窗体进行了隐藏(因为我返回的时候是用的show函数,这样才不会出现多个窗体)。我直接关闭子窗体的时候,所有的窗体就都消失了,但是实际上程序进程并没有结束,当再次执行程序时,就出现了上面的问题。

问题解决:
我的想法是在每个子窗口关闭的时候,让它们都重新返回主窗口,然后让主窗口关闭时关闭整个程序的进程。这样的话,不仅实现了调用子窗口时主窗口隐藏功能,又能避免关闭窗口而进程未关闭的问题。

① 子窗口关闭时返回主窗口
Form2.cs:

 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
 {
      var frm = new Form1();
      frm.Show();
}

Form2.Designer.cs:

 this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form2_FormClosing);

注意:这是当需要触发FromClose事件的时候都需要添加的。

② 主窗口关闭时结束程序进程
From1.cs:

 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
 {
      Application.Exit(); 
 }

2. 没有输入全部参数时会报错

问题描述:
在进行模型中的传输损耗时我们需要进行参数输入,程序对它进行读入后才能进行计算,如果读入为空则会出错。

解决思路:
在 “计算传输损耗” 的Click事件中对参数输入框textBox控件内容进行判断,如果为空,则用默认值进行填入然后进行计算。
(感觉这种解决办法不是很好,后面可能会改成对数值进行判断和提示,添加默认值的功能可以再添加另一个按钮用来实现。)

其中一部分的代码:

 private void Btn_OK_Click(object sender, EventArgs e)
 {
     int f_c ;

     if (Txt_Fc.Text == "")                 //如果Txt_Fc.Text为空
     {
         Txt_Fc.Text = "900";               //直接将900写入Txt_Fc.Text中
     }
   
     f_c = Convert.ToInt32(Txt_Fc.Text);    //读取Txt_Fc.Text中的内容并转换为int类型赋值给f_c
 }

当不进行参数输入的时候,点击“计算传输损耗”的运行结果:
在这里插入图片描述
补充几种判断textBox中内容为空的方式:

我上面用的是

if (textBox.Text == "") 

这应该是最简单粗暴的一种,另外还有下面两种:

if(string.IsNullOrEmpty(textBox.Text))

if(string.IsNullOrWhiteSpace(tbx.Text))

3. 一种简单的主窗体美化

为了将界面设计的比较好看,我们对于窗体以及控件都需要进行一些设计,这里我们就介绍一种比较方便的美化方法——使用皮肤库 IrisSkin4.dll。它可以让整个窗体的风格进行统一,还有各种样式可以自己选择。

具体的过程可以看这篇博客(直接引用过来了,这个博主介绍的很详细)
https://blog.youkuaiyun.com/kevinmeanscool/article/details/74010908

我的窗体美化结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值