黑马程序员技术交流社区

标题: winform知识 [打印本页]

作者: 吴承烨    时间: 2013-5-6 22:19
标题: winform知识
1.限制文本框只能输入0-9的数字和小数点

在文本框的KeyPress事件里添加如下代码:

if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '\b'||e.KeyChar=='.')

            {

                e.Handled = false;

            }

            else

            {

                e.Handled = true;

            }



2.回车键实现控件焦点切换

在界面的KeyPress事件里添加如下代码:

if (e.KeyChar == (char)Keys.Enter)

            {

                SendKeys.Send("{TAB}");

            }



3.gridView的右边的编号显示

在gridView的CustomDrawRowIndicator事件里添加如下代码:

if (e.Info.IsRowIndicator && e.RowHandle >= 0)

            {

                e.Info.DisplayText = (int.Parse(e.RowHandle.ToString()) + 1).ToString();

            }



4.界面右键菜单显示

在界面的点击事件里添加如下代码:

if (((MouseEventArgs)e).Button == MouseButtons.Right)

            {

                contextMenuStrip1.Show(gridControl1, ((MouseEventArgs)e).X, ((MouseEventArgs)


e).Y);

            }



5.获取gridView当前选中的行

int selectedHandle;

            selectedHandle = this.gridView1.GetSelectedRows()[0];

            int id = Convert.ToInt32(this.gridView1.GetRowCellValue(selectedHandle, "homeId"));



6.删除提示框

if (MessageBox.Show("确认删除?", "此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes){
                vm.Delete(id);
            }


7.巧用indexOf(string)
作用:返回字符串string在父串中首次出现的位置,从0开始,没有返回-1;
如:int array = lblTin.Text.IndexOf(",");返回逗号在字符串lblTin中首次出现的位置
而indexOf还可以用来判断string字符串是否存在于父串中

if (lblTin.Text.IndexOf(",") > 0)
            {
                MessageBox.Show("逗号存在");
            }
            else
            {
                MessageBox.Show("逗号不存在");
            }

8.金额字符串转换

作用:将一个int型的字符串转换为千分位

如:123123转换为123,123.00

string.Format("{0:N2}", decimal.Parse(123123));


各种字符串格式的效果
格式化:{0:#.00}        效果:123456789.00
格式化:{0:#,#}          效果:123,456,789
格式化:{0:n1}           效果:123,456,789.0
格式化:{0:n2}           效果:123,456,789.00
格式化:{0:f}              效果:123456789.00
格式化:{0:f1}            效果:123456789.0
格式化:{0:¥0.00}     效果:¥123456789.0

效果大致不变,而且可以结合起来使用。
如:
格式化:¥{0:n2}       效果:¥123,456,789.00



9.在一个循环中遍历多个数组
foreach (var x in array1) {
    Console.WriteLine(x);
}
foreach (var x in array2) {
    Console.WriteLine(x);
}

    这样的话,循环主体会很大,而且不希望这样重复的代码。但是同时也不希望创建一个数组来保存array1和array2的所有元素。
    用LINQ的Concat操作会让你方便很多。我们可以使用单个循环来重写上面的代码,如下:

foreach (var x in array1.Concat(array2)) {
    Console.WriteLine(x);
}

要记得引入using System.Linq;
Concat是LinQ里的东西哦


作者: 许庭洲    时间: 2013-5-6 23:09
值得学习ing!
作者: 田福壮    时间: 2013-5-16 11:25
是好东西





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2