C#技术汇总
2017-10-25
- C#设置按钮背景
button1.BackgroundImage = global::Test1.Properties.Resources.ybs_logo;
button2.ForeColor = Color.Red;
button3.FlatStyle = FlatStyle.Flat;
button3.ForeColor = Color.Blue;
button4.ForeColor = Color.Green;
button4.FlatStyle = FlatStyle.Popup;
button5.FlatStyle = FlatStyle.Standard;
button6.FlatStyle = FlatStyle.System;
button6.Font = new Font("隶书",12);
2. Button自动适应文本长度
button2.Text = "123333243423423123121";
button2.AutoSize = true;
3. MouseHover事件
private void button3_MouseHover(object sender, EventArgs e)
{
button3.Font=new Font("隶书",22);
button3.Height = 260;
button3.Width = 130;
button3.Text = "test";
button3.Location = new Point((this.Width - button3.Width) / 2, (this.ClientRectangle.Height - button3.Height) / 2);
button3.Invalidate();
}
4. 如何添加事件
属性:
事件:
5. 制作密码文本框
private void button1_Click(object sender, EventArgs e)
{
textBox1.PasswordChar = (char)0;
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.PasswordChar = '*';
}
6. 限制输入的字符必须为数字。
if (!char.IsDigit(e.KeyChar))
{
MessageBox.Show("input digit please","notification",MessageBoxButtons.OK,MessageBoxIcon.Information);
e.Handled = true;
}
7. SelectedIndexChanged,SelectedValueChanged,SelectionChangeCommitted区别
这两个函数在设定datasource和displaymember和valuemember时,以及手动改变combobox索引和值时都不触发该事件, 只是在界面选择combobox不同值时触发。
SelectedIndexChanged事件:当 SelectedIndex 属性更改时发生,索引改变时触发。
SelectedValueChanged事件:当 SelectedValue 属性更改时发生,值改变时触发。
还有一个类似的事件处理函数SelectionChangeCommitted,区别:
1、SelectedIndexChanged和SelectedValueChanged可以通过编程的方式更改属性而触发事件,但SelectionChangeCommitted事件必须由用户操作选定选项才能触发。
2、在初始化时(设置源)SelectedIndexChanged和SelectedValueChanged都会被调用,而SelectionChangeCommitted没有这个问题。
3、SelectionChangeCommitted也有一个小问题,当打开下拉菜单,用键盘的上下光标键选择条目后(不用鼠标点击),鼠标点击其他控
件,使焦点转移,此时comboBox的Text属性已改变,SelectedIndex属性也已改变,但这样的操作不会触发
SelectionChangeCommitted事件。结论:SelectionChangeCommitted一定要由鼠标选择才能触发。
8. linkLabel的使用方法
private void VisitLink()
{
// Change the color of the link text by setting LinkVisited
// to true.
linkLabel1.LinkVisited = true;
//Call the Process.Start method to open the default browser
//with a URL:
System.Diagnostics.Process.Start("http://blog.junebuy.com");
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
try
{
VisitLink();
}
catch (Exception ex)
{
MessageBox.Show("Unable to open link that was clicked.");
}
}
9.非顶级窗体不能显示为模式对话框。在调用 showDialog 之前应从所有父窗体中移除该窗体
解决办法是:把ShowDialog();改为Show();即可
DetailCreate DC = new DetailCreate();
DC.MdiParent = this;
DC.Show();
10.一个总经理有三个女儿,她们年龄之和是13岁。—个下属知道总经理年龄且三个女儿的年龄乘积刚好是总经理年龄。下属不知道三个女儿年龄。经理说有—个女儿超过5岁。问三个女儿的各年龄?
for (baby1 = 0; baby1 < 20; baby1++)
{
for (baby2 = 0; baby2 < 20; baby2++)
{
dad_age = baby1 * baby2 * (13 - baby1 - baby2);
if (dad_age < 100 && dad_age>20)
{
baby3 = 13 - baby1 - baby2;
if(baby1>5&&baby2<5&&baby3<5)
Console.WriteLine("baby1:{0},baby2:{1},baby3:{2},dad:{3}",baby1,baby2,baby3,dad_age);
}
}
}
11. DeleteOnSubmit 和 DeleteAllOnSubmit区别
a. DeleteOnSubmit: 将一个实体从datacontext对象中删除,并在SubmitChange()的时候执行更改。
b. DeleteAllOnSubmit:将一个实体集合从datacontext对象中删除,并在SubmitChange()的时候执行更改。
例:
protected void btnDelete_Click(object sender, EventArgs e)
{
UsersDataContext dal = new UsersDataContext();
User user = dal.Users.FirstOrDefault(s => s.UserName == "Tom");
if (user != null)
{
dal.Users.DeleteOnSubmit(user);//删除单条数据
}
var q = dal.Users;
dal.Users.DeleteAllOnSubmit(q);//删除数据集
dal.SubmitChanges();
}
※注:以上两个函数必须要跟随SubmitChange()函数才能从数据库中删除数据。我们可以通俗的理解为:以上两个函数仅仅相当于一条Sql语句,而SubmitChange()相当于执行此条Sql语句。
11.justdecompiler反编译工具
12.
private void Form1_Load(object sender, EventArgs e)
{
int DeskWidth = Screen.PrimaryScreen.WorkingArea.Width;
int DeskHeight = Screen.PrimaryScreen.WorkingArea.Height;
this.Width = Convert.ToInt32(DeskWidth * 0.6);
this.Height = Convert.ToInt32(DeskHeight * 0.6);
}
13.
在C#中没有其他的托管语言,没有自动的,决定性的析构的概念,而是有一个垃圾收集器,它会在未来的上时刻释放资源,所以当忘记关闭数据库连接可能传导致
.NET可执行程序的各种问题。解决的方法是原来在创建Sqlconnection时使用Using (sqlconection conn=new sqlconnection(strSQL))
使用using语句,定义一个范围,在范围结束时处理对象。(不过该对象必须实现了IDisposable接口)。其功能和try ,catch,Finally完全相同。
using (SqlConnection cn = new SqlConnection(SqlConnectionString)){……}
//数据库连接
using (SqlDataReader dr = db.GetDataReader(sql)){……}
//DataReader
conn.open();
14. Visual Studio 如何实现打开工具箱
通过如下方式: “窗口-重置布局”
15.
打开新窗口出现异常,提示“被指定窗体的MdiParent的窗体不是MdiContainer”
FrmMorKeepAccountsListMzGoods frmMorKeepAccountsListMzGood = FrmMorKeepAccountsListMzGoods.CreateInstance(this);
frmMorKeepAccountsListMzGood.Show();
frmMorKeepAccountsListMzGood.WindowState = FormWindowState.Maximized;
frmMorKeepAccountsListMzGood.BringToFront();
替换成
FrmMorKeepAccountsListMzGoods frmMorKeepAccountsListMzGood = FrmMorKeepAccountsListMzGoods.CreateInstance(this.ParentForm);
frmMorKeepAccountsListMzGood.Show();
frmMorKeepAccountsListMzGood.WindowState = FormWindowState.Maximized;
frmMorKeepAccountsListMzGood.BringToFront();
或者:
FrmComeSubmitList frmComeSubmitList = FrmComeSubmitList.CreateInstance(base.MdiParent);
frmComeSubmitList.Show();
frmComeSubmitList.WindowState = FormWindowState.Maximized;
frmComeSubmitList.BringToFront();
16. 低版本的项目引用高版本编译的项目,会出现如下图的黄色叹号