本文为自己开发中通过网络查找或者自己研究的一些琐碎事件的记录,包含控件、控件的属性使用、控件的事件使用、控件的一些方法的使用。
1、设置窗体大小不可改变:找到属性FormBordeStyle,设置为FixedSingle,此时无法通过拖动鼠标改变窗体大小;
2、设置窗体无法最大化:找到属性MaximizeBox,设置为False,此时最大化窗体控件不会消失,但无效;
3、设置窗体无法最小化:找到属性MinximizeBox,设置为False,此时最小化窗体控件不会消失,但无效;
4、让窗体无法最大化和最小化,将②③同时设置为False即可;
5、设置窗体右上角三个按钮消失或失效:找到属性ControlBox,最小化、最大化、关闭按钮和窗体图表都消失,只剩窗体标题;
6、设置只让窗体的关闭按钮失效:这个目前没找到改变属性来实现,但可以通过代码来实现。
选择窗体的事件FormClosing,在事件里面编写代码:e.Cancel = true即可让关闭按钮失效。如果需要只是让用户无法点击关闭按钮失效,但程序可以关闭窗体,可以编写代码逻辑来实现。
比如设置一个isClose属性,然后初始值设置为false,在代码进行到某一步,让isClos属性变为true,然后调用this.Close()即可关闭窗体,然后在FormClosing里面写上判断:
if(isClose)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
7、改变label大小:找到属性AutoSize,此时便可以改变label大小了;
8、改变label字体:找到属性Font即可编辑字体;
9、改变字体位置,比如居中等:找到属性TextAlign,在里面进行选择即可;
10、将文件拖拽到TextBox中:将属性AllowDrop改为True,然后找到事件DragEnter和DragDrop,进入两者里面编写代码即可。DragEnter主要是指文件拖拽进来的事件,DragDrop主要是文件拖拽进来后的事件,下面通过代码来讲解一下:
private void textBox1_DraEnter(object sender, DragEventArgs e)
{
//DataFormats.FileDrop作用是拖拽进来的是否是文件,DataFormats下面还有很多可以选择
if(e.Data.GetDataPresent(DataFormats.FileDrop))
{
//DragDropEffects下有很多可以选择,DragDropEffects.All是把全部都选择了
e.Effect = DragDropEffects.All;
}
else
{
//DragDropEffects.Node是DragDropEffects下的一个属性,表示什么也不会做了,
//也就是拖拽失败,可能就是么拖进来或者拖拽进来的不是文件
e.Effect = DragDropEffects.Node;
}
}
//这里面根据自己拖拽进来后需要做什么来进行代码编写
//比如我这里是拖拽进来后,对Excel文件进行操作
//然后我需要对文件进行判断,是否是Excel文件
private void textBox1_DragDrop(object sender, DragEventArgs e)
{
Array fileArray = (Array)e.Data.GetData(DataFormats.FileDrop);
textBox1.Text = fileArray.GetValue(0).ToString();
//判断是否是Excel文件
if(Path.GetExtension(textBox1.Test) == ".xlsx" || Path.GetExtension(textBox1.Test) == ".xls" || Path.GetExtension(textBox1.Test) == ".xlsm" )
{
//TODO...
}
else
{
//TODO...
}
}
我这里暂时没想到什么好的办法来判断或者限制拖拽进来的是否是Excel文件,如果有更好的办法,希望能通过评论或者邮件告知一下。
11、通过按钮来选择文件并限制选择的类型:通过按钮来选择文件的时候,使用一个TextBox控件、一个Button按钮来控制、一个OpenFileDialog来进行选择。点击Button按钮,然后触发OpenFileDialog,最后会把选择的文件名显示在TextBox中,代码实现如下:
private void button1_Click(object sender,EventArgs e)
{
//限制打开的文件的类型
openFileDialog1.Filter = "Excel文件|*.xlsx;*.xls;*.xlsm";
if(openFileDialog1.ShowDialog(this) == DialogResult.Ok)
{
textBox1.Text = openFileDialog1.FileName;
}
}
12、进行验证事件:比如我们在TextBox里面输入一个字符串,我们需要验证是否为空,此时我们可以使用TextBox的验证事件,在事件中找到Validating,创建它的事件,然后就可以进行代码编写了,如下:
private void textBox1_Validating(object sender, CancelEventArgs e)
{
string name = textBox1.Text.Trim();
if(name == "")
{
e.Cancel = true;
}
}
13、错误信息提示:比如上面验证事件,如果验证不通过,给一个错误提示,此时需要在窗体加入一个ErrorProvider,代码如下:
private void textBox1_Validating(object sender, CancelEventArgs e)
{
string name = textBox1.Text.Trim();
if(name == "")
{
e.Cancel = true;
this.errorProvider1.SetError(textBox1,"xx不能为空!");
}
}
14、判断一个文件是否已经被打开:项目中有一个地方,我需要通过程序来打开Excel或者Word文档,然后我需要进行判断,判断此文档是否已经被打开,因此,这里需要用代码来实现一下,代码如下:
private bool IsFileUse(string name)
{
bool isUse = fasle;
FileStream fileStream = null;
try
{
fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
isUse = fasle;
}
catch(Exception e)
{
isUse = true;
}
finally
{
if(fileStream != null)
{
fileStream.Close();
}
}
return isUse;
}
15、选择文件保存路径(文件夹)FolderBrowserDialog:比如我们需要将一个文件另存在哪里,这里是指存到哪个文件夹,我们可以在窗体选择一个TextBox,再拖一个Button,然后放一个FolderBrowserDialog,代码编写:
private void button1_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
}
16、选择另存为(SaveFileDialog),即选择一个位置,并且自己命名保存的文件名以及可以实现选择文件后缀名,类似15的操作,将FolderBrowserDialog换成SaveFileDialog即可,代码如下:
private void button1_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "Word文档|*.docx|Word 97-2003文档|*.doc";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = saveFileDialog1.FileName;
}
}
17、设置让窗体弹出时的位置,一般可能设置为居中:找到窗体的属性StartPosition,设置属性值为:CenterScreen即可。
18、点击关闭窗口按钮时,询问是否关闭:找到窗体关闭事件——FormClosing,加入MessageBox:
private viod Form_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("是否关闭窗口?","关闭", MessageBoxButtons.YesNo, MessageBoxIcon.None);
if(result == DialogResult.No)
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}
19、单击dataGridView某一单元格,让选中整行:
找到dataGridView的属性,将属性SelectionMode修改为FullRowSelect即可。
20、使用自带的Timer制作简单的定时器,直接分享代码:
//在相应的代码区域调用此方法即可
public void Execute()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Enabled = true;
timer.Start();
timer.Elapsed += new ElapsedEventHandler(Test);
}
public void Test(object soure, ElapsedEventArgs)
{
//if里面可以填写什么时间,比如我是让其7:11:22的时候触发里面的条件
if(DateTime.Now.Hour == 7 && DateTime.Now.Minute == 11 && DateTime.Now.Second == 22)
{
//这里随便填需要触发的事件
}
}
21、RadioButton默认选中:找到属性Checked,修改为true即可。
22、隐藏或者显示tableControl的某一个集合选项:这里提供两种方法,第一种方法是移除:在代码中使用:tablControl.TabPages.RemoveByKey(string key);。第二种方法是置null的方法:TabPageName.Parent
= null;其中TabPageName指的是集合里面选项的名字。
23、dateTimePicker修改时间的显示格式:找到属性Format,其中有四个选项:Long、Short、Time、Custom,Long显示的格式是yyyy年MM月dd日,Short显示的格式是yyyy/MM/dd,Time显示的格式是HH:mm:ss,Custom显示的是自定义的格式。如果选择自定义的格式,需要在属性CustomFormat中进行自定义格斯的设置。
24、dateTimePicker后台获取时间:有两种方法获取,第一种是dateTimePicker.Text()获取,第二种是使用dateTimePicker.Value.ToString();获取,使用第二种还可以进行获取格式的设置,例如:dateTimePicker.Value.ToString("yyyyMMdd");
25、隐藏WebBrowser的滚动条:找到ScrollBarsEnabled属性,设置为false即可。
26、隐藏RadioButton:找到Visible,修改属性为false即可。如果要在代码中动态隐藏,this.RadioButton.Visible = false;
27、判断ListBox中的集合是否被选择了:this.ListBox.SelectedItems.Count > 0 即可判断是否选择了。
28、向ListBox集合中添加新的集合:ListBox.Items.Add("新添加的集合");
29、清除ListBox的集合:this.ListBox.Items.Clear();
30、DataGridView的标题居中设置:找到DataGridView的ColumnHeaderDefaultCellStyle,选择其中的Alignment,将其设置为MiddleCenter即可。
31、取消DataGridView中点击标题进行排序:选择修改列,然后找到指定的列,在行为中找到SortMode,将其修改为NotSortable即可。
32、DataGridView的列内容设置居中:选择编辑列,选择指定的列,找到外观中的DefaultCellStyle,在弹出的编辑框中,将Alignment修改为MiddleCenter即可。
33、DataGridView中的行列随窗体大小变化而变化:找到AutoSizeColumnsMode,将其中的属性修改为Fill即可。
34、将DataGridView的第一列空白部分隐藏掉:找到RowHeadersVisible属性,修改为false即可。
35、设置DataGridView的行列不可以拖动:找到属性AllowUserToResizeColumns和AllowUserToResizeRows设置为false即可。
36、DataGridView的单击触发事件:CellClick是单击单元格任意部分触发,CellContentClick是单击单元格内容时触发。
37、设置DataGridView只能选中一行,不能选中多行:找到属性MultiSelect,设置为false即可。
38、清空DataGridView:this.dataGridView.Rows.Clear().
39、如何判断DataGridView有无数据:this.dataGridView.DataSource == null。
40、禁止DataGridView排序:选择编辑列,然后找到对应的列,将其中的SortMode修改为NotSortable即可。
41、ComboBox增加集合:ComboBox.Items.Add("")。
42、获取ComboBox中选定的值: ComboBox.SelectedItem.ToString();
43、ComboBox绑定默认值:ComboBox.SelectedIndex = n;n是集合的序号,-1是默认为null。
44、ComboBox设置为只选(只读):ComboBox没有只读属性,只能设置为只选,找到属性DropDownStyle,修改为DropDownList即可。
45、当dataGridView有横向滚动条时,发现拖动时闪烁很明显,影响用户体验,此时可以如下设置:
Type type = DataGridView.GetType();
PropertyInfo pi = type.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(DataGridView, true, null);
46、dataGridView固定某一列:在编辑列中找到需要固定的列,然后将其的属性Frozen修改为true即可。
47、dataGridView数据加载很慢的解决办法:对于该问题,只能尽量将AutoSizeColumnsMode和AutoSizeRowsMode设置为None。
48、C#获取当月的第一天:DateTime.Now.AddDays(1 - DateTime.Now.Day).Date
49、C#获取当月的最后一天:DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1)
50、C#获取某月的第一天:dateTime.AddDays(1 - dateTime.Day),dateTime是时间
51、C#获取某月的最后一天:dateTime.AddDays(1 - dateTime.Day).AddMonths(1).AddDays(-1)
52、设置窗口最大化:this.WindowState = FormWindowState.Maximized;
53、dataTimePicker的初始默认值设置为空:将dataTimePicker的Format属性设置为Custom,然后将CustomFormat的值安一个空格即可。选择dataTimePicker的ValueChanged事件,在里面写上当事件改变时的事件代码:
this.dataTimePicker1.Format = DateTimePickerFormat.Long;
this.dataTimePicker1.CustomFormat = null;
要判断是否选择时间的时候,使用代码:
" ".Equals(this.dataTimePicker1.CustomFormat)
54、