首页 > 代码库 > C#学习笔记 简记
C#学习笔记 简记
1、 Console.WriteLine(“Fuck you!”);
打印,打印完后自动换行。
也可以这么用Console.WriteLine(“{0,1,2}”,name,age,sex);
2、 Console.ReadLine()
读取,使用实例:
string name ;
name = Console.ReadLine();
Console.WriteLine(name.ToLower());//变成小写
3、 转换
转换类型
4、设置Form的名字 设计--(name)
4、 Button 相关:
a.设置窗体标题 Text = “此处加入标题”
b.退出程序 Application.Exit();
6、Label的名字 在Text中修改
LinkLabel-------------LinkVisited单击控件后显示另一种颜色
在这里输入要多行显示的东西就行了(图里的testMulti-Line是我自己打的),效果如下
7、TextBox--------------- MaxLength 设置最大长度
Muitiline 多行(此时WordWrap也设置成True)
这里把none变为水平,竖直,可以添加滑动条,效果如图
但是这里设为true的时候,即使选择ScrollBars水平,也不会出现,必须把wordwrap设为false
单行 此处设为false
想要在TextBox里换行的话,设为true
PasswardChar 用什么char代表密码
WordWrap 多行文本,一行宽度超过控件宽度,文本是否换行
ScrollBars 设置滚动条,可以水平或者竖直
MaxLength 设置最大长度
设为false的时候,按tab键,如果进入了textbox,仍然会跳出,设为true的时候,进入textbox,就不能再出去了,tab就是在textbox里当tab用
9、radiobutton -----------放在一个Panel里就变成互斥的 一次只能选一个,并且Panel不可见
10、ListBox
在Multisimple 可以按ctrl 多选
在Item里添加项,也可以在函数中写.add(),括号里写类,其实字符串也可以Add的返回值为第几项,Remove可以删除,Remove(“string”),RemoveAt(),Clear()
listBox1.Items.Remove("3");把“3”删去
listBox1.Items.RemoveAt(1); 把下标为1的删去
listBox1.Items.Add("Fuck");
效果:
Add返回下标
在特定位置插入Item 使用listBox1.Items.Insert(2,"insert"); 没有返回值,但是”INsert”接着原来的下标
MessageBox.Show("Selected Item"+ listBox1.SelectedItem+" is "+ listBox1.SelectedIndex);
为了可以多选,这么做:
按字母序排列:
MessageBox的返回值
使用实例:
if (MessageBox.Show(“Would youlike to do X?”,
“MessageBoxsample”,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
//Code to do X would go here.
}
12、ComboBox
----------下拉的模式dropdownstyle
----------items 集合里添加项
Listbox不可以输入东西,但是combox可以,输入以便选择
这个模式去选择填入的时候是否自动填充等
13、timer
Interval--------------设置间隔
不可见
14、tabcontrol
15、ListView
也有multiSelect shift 或者ctrl可以多选
ListView的一些方法(代码示例):
*** if (lvwMyListView.SelectedItems.Count> 0)
MessageBox.Show(lvwMyListView.SelectedItems[0].Text);
*** lvwMyListView.Items.Remove(lvwMyListView.SelectedItems[0]);
*** lvwMyListView.Items.Clear();清除所有的项目
16、多线程:
Thread t = newThread(ThreadStart(new 函数名));
t.Start();
多线程的时候,可能出现线程间的问题
加一句:Control.
17、字符串分割 String[]results = result.splt(‘分隔符’);
18、静态????
19、ProgressBar
Progressbar.Step = …;
20、回调—event—事件
声明委托----
21、MENU hotkey类似于QT的& C#中用&
22、keys.Menu 检测是不是按下了alt
23、MessageBox.Show(显示的文字,标题,按钮,图标);
此处按钮和图标都是预先定义的,不需要自己定义button再传值
所有使用方法:
q MessageBox.Show(MessageText,Caption);
q MessageBox.Show(MessageText,Caption, Buttons);
q MessageBox.Show(MessageText, Caption, Buttons,
Icon);
In all these statements, MessageTextisthe text to display in the message box, Caption determines what appearsin the title bar of the message box,Buttons determines which buttonsthe user sees, and Icon determines what icon appears in the message box
n 几个例子:
MessageBox.Show(“I’m about to do
something...”,”MessageBox sample”,
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
n MessageBox.Show(“I’m about to do something
irreversible...”,“MessageBox sample”,
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button2);
n MessageBox.Show(“Something bad has happened!”,
”MessageBox sample”,
MessageBoxButtons.OK,MessageBoxIcon.Error);
n MessageBox.Show(“Would you like to format your hard
drive now?”, “MessageBoxsample”,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2);
24、重命名一个类:
方法1:
把文件名 Form1.cs改为View.cs 发现The Name propertyof the form is actually changed automatically when you rename the file.
方法2:
改掉设计
这里的Name,这样可以把类名改掉,但是文件名.cs没被改掉
25、图片浏览器 代码模板
privatevoid button1_Click(object sender, EventArgs e)
{
if(ofSelectPicture.ShowDialog()==DialogResult.OK)
{
picShowPicture.Image=Image.FromFile(ofSelectPicture.FileName);
this.Text=string.Concat("Picture Viewer("+ofSelectPicture.FileName+")");
}
}
privatevoid button2_Click(object sender, EventArgs e)
{
this.Close();
}
26、PictureBox支持的格式 在Fliter设置
注意,这个Fliter是PictureBox control的属性之一,而非PictureBox的
27、窗口的状态
n A design window can be placed into one of four primary states:
q Closed. The window is not visible.
q Floating. The window appears floatingover the IDE.
q Docked. The window appears attached toan edge of the IDE.
q Automatically hidden. The window isdocked, but it hides itself when not in use.
28、导入/清除背景图片,选择之后点导入/清除
29、去掉最小化和最大化的按钮,
问题是,只有同时选false才会出现这样的效果,否则只是实心而不能按但是不会消失
30、去掉关闭按钮
31、可以把窗口的边框去掉
这样可以做出效果
32、new一个新的form
Form1 f2=newForm1();
f2.Show();//or f2.Visible=true.
注意这里与QT的不同,new之后有(),另外返回的不是指针
33、///即可自动生成文档,当写的时候,自己写的文档会在调用的时候会显示
34、@”\” “”中的转义就没用了,此时里面不能有引号
@“adf”adf”afd”此时只对第一个”adf”起作用
35、注册表里,如果不存在的项,返回NULL
36、窗体启动时的位置
37、代码改变窗体的位置
this.WindowState = FormWindowState.Minimized;
38、The Close() methodtells Visual C# not to simply hide the form but to destroy itcompletely.
39、修改窗体初始时的状态,可选择初始时最小化,最大化或正常
40、数据库 主键只有一个
主键重复,不能编辑,删除等
Insert into StuScore(StuName/*表名*/,Point/*列名* /)values(‘’,’/*对应列的内容*/’);
“Update 表名 set 列名=内容”
“Delete from 表名” 把数据全部清空
“Delete from 表名 where ID=5”;
41、
点击这个按钮之后显示然后逐个点击各个控件,次序将是你点击的次序
再点击一次将退出这种修改控件次序的模式
42、设置透明度
q The default Opacity value of 100% means that the form and itscontrols are completely opaque (solid)
43、滚动条
效果
44、tree view
效果
privatevoid button1_Click(object sender, EventArgs e)
{
TreeNode objNode;
objNode= tvwLanguages.Nodes.Add("MattPerry");//添加一个新的Node objNode
objNode.Nodes.Add("isual C#");//在objNode下添加subNode
}
效果如图:
删除Node
tvwLanguages.Nodes.Remove(tvwLanguages.SelectedNode);
删除所有的Node
tvwLanguages.Nodes.Clear();
45、menu相关
-------多个menu的时候,仅仅最下面的起作用
-------快捷键
这样就把菜单的一个key设置成为…如图示:
46、show和ShowDialog()
我试了,new一个form的时候,Show() ,ShowDialog()都可以持续下去
47、给控件添加事件的方法:
选定事件,双击时间,就可以添加代码了。
The e parameter contains informationspecific to the occurrence of this event. In keyboard-related events, the eparameter contains information about the key being pressed; it’s what we use towork with the user’s keystrokes.
48、要在一个Form关闭的时候做些事情,只要双击FormClose事件,然后在里代码括号里输入事件
49、事件和委托
要创建一个事件驱动的程序需要下面的步骤:
1. 声明关于事件的委托;
2. 声明事件;
3. 编写触发事件的函数;
4. 创建事件处理程序;
5. 注册事件处理程序;
6. 在适当的条件下触发事件。
事件处理委托习惯上以EventHandler结尾,比如AlarmEventHandler。事件Alarm实际上是事件处理委托AlarmEventHandler的一个实例。引发事件的代码常常被编写成一个函数,.NET约定这种函数的名称为“OnEventName”,比如OnAlarm()的函数。在Host类中,我们定义了事件处理程序HostHandleAlarm(),并把它注册到dog.Alarm事件中。
事件处理程序的参数应该和事件委托相同。一般情况下,事件处理程序接受两个参数,一个是事件的发送者sender,一个是事件参数e。事件参数用于在发送者和接收者之间传递信息。
.NET提供了100个事件参数类,这些都继承于EventArgs类。一般情况下,使用.NET自带的类足够了,但为了说明原理,我们自定义一个事件参数类。
试一试:使用事件参数
//事件参数
public class NumberOfThiefEventArgs :EventArgs
{
public int numberOfThief;
//构造函数
public NumberOfThiefEventArgs(int number)
{
numberOfThief = number;
}
}
//事件发送者
class Dog
{
//1.声明关于事件的委托;
public delegate voidAlarmEventHandler(object sender, NumberOfThiefEventArgs e);
//2.声明事件;
public event AlarmEventHandler Alarm;
//3.编写引发事件的函数,注意多了个参数;
public void OnAlarm(NumberOfThiefEventArgs e)
{
if (this.Alarm != null)
{
Console.WriteLine("/n狗报警: 有小偷进来了,汪汪~~~~~~~/n");
this.Alarm(this, e);
}
}
}
//事件接收者
class Host
{
//4.编写事件处理程序,参数中包含着numberOfThief信息
void HostHandleAlarm(object sender, NumberOfThiefEventArgs e)
{
if (e.numberOfThief <= 1)
{
Console.WriteLine("主 人: 抓住了小偷!");
}
else
{
Console.WriteLine("主人:打110报警,我家来了{0}个小偷!", e.numberOfThief);
}
}
//5.注册事件处理程序
public Host(Dog dog)
{
dog.Alarm += new Dog.AlarmEventHandler(HostHandleAlarm);
}
}
//6.现在来触发事件
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
Host host = new Host(dog);
//当前时间,从2008年12月31日23:59:50开始计时
DateTime now = new DateTime(2008, 12, 31, 23, 59, 50);
DateTime midnight = new DateTime(2009, 1, 1, 0, 0, 0);
//等待午夜的到来
Console.WriteLine("时间一秒一秒地流逝... ");
while (now < midnight)
{
Console.WriteLine("当前时间: " + now);
System.Threading.Thread.Sleep(1000); //程序暂停一秒
now = now.AddSeconds(1); //时间增加一秒
}
//午夜零点小偷到达,看门狗引发Alarm事件
Console.WriteLine("/n月黑风高的午夜: " + now);
Console.WriteLine("小偷悄悄地摸进了主人的屋内... ");
//创建事件参数
NumberOfThiefEventArgs e = new NumberOfThiefEventArgs(3);
dog.OnAlarm(e);
}
}
运行结果如下:
在修改过的代码中,我们定义了一个名为NumberOfThiefEventArgs的事件参数类,它继承于EventArgs类。在该类中我们声明了一个名为numberOfThief的成员变量,用来记录来了几个小偷。当事件发生时,狗通过事件参数传告诉主人具体信息。
C#学习笔记 简记