一.WPF认识
很多教程都是WinForm,但是Windows8平板电脑,Windows Phone手机开发都是使用微软的XAML技术,WPF也是一个采用XAML的类似于WinForm的技术,学习之后不仅掌握了编程基础,也可以开发C/S程序,也约等于掌握了平板电脑,手机开发,哪怕以后接触WinForm也是“一通百通”。
二.Sender
private void sender_Click(object sender, RoutedEventArgs e)
{
//sender触发当前事件的控件,是object类型的
//Button控件对于C#中的Button类
//sender可以看成是触发事件的控件,但是是object类型,需要类型转换
//如果有一个Button指向的是该事件,则触发该事件的所有控件都能够成功实现
Button bs = (Button)sender;
bs.Content = "我是通过sender实现的";
}
三.C#基础加强类继承
1.定义语法:“class 子类:父类”,不指定父类则父类为Object ;
2.Net中所有类都直接或者间接继承自Object;
3.可以用父类变量指向子类对象,不能把子类变量指向父类对象;“变量类型”和“对象类型”不一样,盒子中的面包可以贴“面包”,“面食”,“食物”等标签;
4.如果一个父类变量指向的是子类对象,那么可以把子类变量指向这个父类变量,但是需要做类型转换:Person p1=(Person) obj1;
//在同一项目下面建一个Animal类,有new就有新对象
Animal a1 = new Animal();
a1.Jiao();
//在同一项目下面建一个Dog类,继承Animal类
//实例化一个d1,根据前面学习的继承基础可以知道,子类可以使用父类的公用方法
Dog d1 = new Dog();
d1.Jiao();//使用父类方法
d1.Wang();//使用自己方法
重点来了/
//实例化一个Dog的对象
Dog dog = new Dog();
//父类的变量指向子类的对象是可以的
Animal animal = dog;//变量是一个标签,对象是一个实际存在的东西,
//其实也就是说给实在的东西贴标签的过程。
//一箱子苹果,可以贴标签为“水果”“食物”
有来重点了/
//不可以把一个子类的变量指向父类的对象
//实例化一个父类动物的对象(对象真实存在的)
Animal a = new Animal();
//不可以把一个狗的标签贴在动物的身上
Dog dd = a;这句代码是错误的!!!
Dog dd1 = (Dog)a;//强制类型转换,这样可以
/再看重点//
//只要new,就有对象,下面这句代码的意思:实例化一个Dog对象,
//通过实例化就有了真实存在的该Dog对象,把动物的标签贴到Dog上
//这句代价是对的,可以这样来
Animal animal2 = new Dog();
//虽然这里animal2作为动物标签贴在了狗身上,但是animal2还是代表Animal,它是无法调用子类Dog的Wang();
Dog ddd =(Dog)animal2;//强制类型转换为Dog
ddd.Wang();//这样是可以调用子类Dog的公用方法
四.集合
1.有时候不能预先确定长度或者需要动态修改内容和长度,这时候可以使用List<T>泛型集合,把T改成对应的类型即可。
2.List<T>,可以看成是动态的数组。Add,Clear,Count,Remove,ToArry(转换为数组)
3.List<T>可以使用foreach遍历,以后要多用,更专业
//定义一个数组长度为3的int数组
int[] arr = new int[3];
//对数组进行赋值
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
//遍历输入数组的每个值,要学会使用foreach进行遍历,记住:int i in arr;在循环内的i则对应表示arr[i]
foreach (int i in arr)
{
MessageBox.Show(i.ToString());
}
///以上定义一个数组有一个弊端,数组的长度固定,添加起来比较麻烦,用List<数据类型>比较好
//定义一个List<T>泛型数组
List<int> list = new List<int>();
//进行添加值
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
foreach (int i in list)
{
MessageBox.Show(i.ToString());
}
MessageBox.Show(list.Count.ToString());
//移除数组中值为3的项
list.Remove(3);
MessageBox.Show(list.Count.ToString());
//清空list数组
list.Clear();
MessageBox.Show(list.Count.ToString());
五.Xaml
1.Xaml的特点:Xaml就是XML语法,以后要多手写Xaml,写法如同Html,开闭节点必须一致,也可以<aaa/>简写自动关闭(简写适用于比较简单的开发,复杂的还是要用开闭节点);
2.每个控件或者元素都是一个XML标签,一个XAML标签一般是new一个对象。
3.两种赋值方式:内部式:Test=”www”;闭合式:<TextBox.Text>www</TextBox.Text>,闭合式适合于比较复杂的属性值。
<Button HorizontalAlignment="Left" Margin="48,49,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" >
<Button.Content>提交</Button.Content>
<Button.Height>32</Button.Height>
</Button>
六.控件通用属性
使用方法和WinForm差不多,但是在这里主要是Visibility的枚举,控件的隐藏属性和WinForm不同,则需要举例说明一下:
private void Button_Click(object sender, RoutedEventArgs e)
{
//visibility是枚举类型的,我们只用两个值.visible显示,collapsed隐藏
if (this.txt_name.Visibility == System.Windows.Visibility.Visible)
{
this.txt_name.Visibility = System.Windows.Visibility.Collapsed;
}
else
{
this.txt_name.Visibility = System.Windows.Visibility.Visible;
}
}