2017.12.20 点击旋转图片、鼠标滑入离开、C#中的反射
第一组:刘聪 点击旋转图片功能
点击图片实现逆时针旋转功能:
Html:
image.png
Model中存储了多张照片,通过遍历显示每张照片,绑定点击事件,并且传入事件和引索作为参数。
Js:
image.png
通过current[i]记录点击次数,改变rotate值,实现旋转。
效果:
image.png
该方法实现了简单的图片旋转功能,只要点击图片,图片就旋转90度。
第二组:徐晋 鼠标滑入离开及移动
Jquery中的mouseover,mouseout,mousemove方法:
- mouseover() 方法:当鼠标指针位于元素上方时,会发生 mouseover 事件
- mouseout() 方法:当鼠标指针从元素上移开时,发生 mouseout 事件
- mousemove() 方法:当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件
mouseover,mouseout,mousemove的使用方法示例之图片提示:
代码:
<script>
$(function () {
var x = 10;
var y = 20;
$("a.tooltip").mouseover(function (e) {
this.myTitle = this.title;
this.title = "";
var imageTitle = this.myTitle ? "<br/>" + this.myTitle : "";
var tooltip = "<div id='tooltip'><img src='" + this.href + "' alt='预览图'>" + imageTitle + "</div>";
$("body").append(tooltip);
$("#tooltip").css({
"top": (e.pageY + y) + "px",
"left": (e.pageX + x) + "px"
}).show("fast");
}).mouseout(function () {
this.title = this.myTitle;
$("#tooltip").remove();
}).mousemove(function (e) {
$("#tooltip").css({
"top": (e.pageY + y) + "px",
"left": (e.pageX + x) + "px"
});
});
})
</script>
实现效果:
鼠标滑入图片时显示图片的放大提示,并且提示可以跟随鼠标移动,鼠标离开图片时提示消失。
第三组:吴景霞 详解C#中的反射
两个现实中的例子:
-
B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医生也不是声学专家,不知说得是否准确_)。
-
地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和地核。地壳是固体,地核是液体,地幔则是半液半固的结构(中学地理的内容,大家还记得吧?)。如何在地球表面不用深入地球内部就知道其内部的构造呢?对,向地球发射“地震波”,“地震波”分两种一种是“横波”,另一种是“纵波”。“横波”只能穿透固体,而“纵波”既可穿透固体又可以穿透液体。通过在地面对纵波和横波的反回情况,我们就可以大体断定地球内部的构造了。
大家注意到这两个例子的共同特点,就是从一个对象的外部去了解对象内部的构造,而且都是利用了波的反射功能。在.NET中的反射也可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中的反射还可以运态创建出对象并执行它其中的方法。
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个对象的类型在编译时还不知道。
反射的用途:
(1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。
(2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
(3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。
(4)使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。
(5)使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。
(6)使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。
(7)使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。
(8)使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。
详情见下面链接:
详解C#中的反射
第四组:傅云 Jquery获取动态id
在没有触发点击事件,而是调用方法自动生成的input或其他相关属性(id,class,value等)时,使用此JS方法是获取不到的
document.getElementsByTagName("input")
这个时候可以起作用的是JQuery的find()方法
$('#div1').find("input");
第五组:王颢 DateTimePicker总结
在WinForm中经常会用到DateTimePicker这个控件,用这个控件获取时间会使用到Text属性或者Value属性。
关于这两个属性,还是存在着一些的不同,在这里简单的测试和总结一下。
首先看一下默认状态下的DateTimePicker控件
就是由含年、月、日三个值拼成的一个字符串表示一个日期的值。
image.png
1. 设置DateTimePicker控件显示的格式
这个控件有一个CustomFormat属性,这个属性可以用来控制控件值显示的日期格式。
在设置这个属性之前,需要将Format属性设置为Custom,表示使用自定义的格式。
CustomFormat的值有以下几种:
(1)不设置任何值:使用默认的显示格式,就是你电脑右下角时间的格式(不包含时分秒)
image.png
image.png
(2)使用自定义的值:这里的这个值是可以任意写的。。。。(不过瞎写没法获得时间)
比如:aaaaa
这里设置格式的方法可以说是匹配特定字符。 以下这些字符是具有特殊含义的字符:y、M、d、h、H、m、s(其他的暂时没有发现)。
y:代表年。
使用yyyy设置后会在控件中显示对应的年份。
image.png
(另外还可以y、yy、yyy这三种会有特殊的显示,不过我也没太弄明白显示的规律,都是由年份相关的值组成的一串字符,一般情况也没啥用)
M:代表月。
MM:代表由两个数字符号组成的月份 ,如1月显示 01,12月显示12。
M:也是代表月,但是这里小于10月均只显示1位,没有前置的0,其余的正常显示。例如:1月显示1,10显示10。
d:代表天或者星期几
dd:代表由两个数字符号组成的天 ,例如:1则显示 01,12显示12。
d: 一位数只显示一个值,没有前置的0,其余正常显示。1显示1,10显示10。
(微软考虑的真周到啊。。。。。)
h/H:都是代表小时,这里使用h是12时制,H是24小时制。(控件会对你输入的值作处理的,比如你使用了h,那么超过12的值会自动转换)
hh/HH:是两个字符组成小时,h/H是一个字符,和上边的M和d的规则是一样的。
m:代表分钟。m和mm的规则和区别和上边一致。
s:代表秒。s和ss的规则和区别也和上边一致。
2. 获取控件设置日期的两个方法及其区别
一般来说获取控件的日期(值)有两种方法,一种是使用Text属性,另一种是使用Value属性。这两个属性都可以做到,但是他们还是有一定区别的,简单的说一下。
-
首先是Text属性,它是获取或设置与当前控件关联的文本。这个意思就是DateTimePicker上显示的是什么,你获取到的就是什么。比如你显示的是a,那么Text属性的值就是a。而且Text属性使用ToString()这个方法的时候是不能传递表达格式的字符串做参数。所以想获得想要的时间格式就需要使用CustomForma这个属性设置想要的格式。
控件显示: image.png
-
使用Value属性。它是获取或设置分配给控件的日期/时间值。这个值与设置的CustomForma属性的值没有任何关系,无论你设置什么格式,他获取的值就是一个固定格式。这个格式与你电脑设置的日期时间格式相同。
控件显示: image.png
但是好处是这里在Value后的ToString()方法可以传递表达格式的字符串做参数。
比如:dateTimePicker1.Value.ToString("yyyy-MM-dd"),这个格式参数的字符的含义和上边的是一致的。