winform开发心得

        最近一直在从事winform的开发,每次都是需要从网上查找资料才能对应具体风格要求,现在总结一下。

        ui方面可以使用CSkin对应的一套ui,使用步骤

        1.在窗口界面,工具箱空白处点击右键,弹出菜单有个”选择项“,点击之后,浏览对应的dll文件加载确认之后,对应的控件就会在工具箱中出现,接下来的操作就和普通控件一样拖动就可以使用。

        2.思路,winform界面开发,对应的弹出框,我们可以把父窗口对象直接传给需要的子对象,子对象在关闭或者调用接口时,直接使用父对象的方法。

        3.Gridview的一些操作:

                1.获取选择行数据转换成对象:this.configGrid.CurrentRow.DataBoundItem as WorkspaceBeanConfig;

                2.grid在绑定对象的时候会显示对象所有的字段,使用 configGrid.AutoGenerateColumns = false;可以显示只有绑定到表单中的字段。

        4.首先grid绑定字段如下图所示:

        

 

        grid多选对应的代码:

 #region 列表勾选
        private void textGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                configGrid.ClearSelection();

                if (configGrid.Rows.Count == 0)
                    return;

                configGrid.CurrentCell = configGrid[1, 0];//如果没有这句代码,如果复选框列有某个单元格获得焦点时,虽然全选,但是此单元格依然不能选中 这句话的意思就是把焦点移出去
                if (ck.HeaderText == " □")
                {
                    for (int i = 0; i < configGrid.RowCount; i++)
                    {
                        configGrid.Rows[i].Cells[0].Value = true;
                    }
                    ck.HeaderText = " √";
                }
                else
                {
                    for (int i = 0; i < configGrid.RowCount; i++)
                    {
                        configGrid.Rows[i].Cells[0].Value = false;
                    }
                    ck.HeaderText = " □";
                }
            }
        }

        private void textGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0 && e.RowIndex != -1)
            {
                int sum = 0;
                for (int i = 0; i < configGrid.RowCount; i++)
                {
                    //必须使用这个属性 EditedFormattedValue 这个属性也是关键 这里不用value是因为不是实时的数据
                    if ((bool)configGrid.Rows[i].Cells[0].EditedFormattedValue)
                    {
                        sum++;
                    }
                }
                if (sum == configGrid.RowCount)
                {
                    ck.HeaderText = " √";
                }
                else
                {
                    ck.HeaderText = " □";
                }
            }
        }
        #endregion

这是要grid要实现的两个方法。对应对象最好时包含iChecked属性,后期查询方便很多。

        

5.combox的一些基础方法:

        

            classfyDatas.Add(new specialty() { Code = "", Name = "请选择级别" });
            classfyDatas.Add(new specialty() { Code = "2", Name = "公司级" });
            classfyDatas.Add(new specialty() { Code = "3", Name = "项目级" });

            skinComboBox1.DataSource = classfyDatas;
            skinComboBox1.ValueMember = "Code";
            skinComboBox1.DisplayMember = "Name";

6.listview的tooltip

        private ToolTip toolTip = new ToolTip();
        private Point pointView = new Point(0, 0);//鼠标位置 外部存储变量
        private void listView1_MouseMove(object sender, MouseEventArgs e)
        {
            ListViewItem lv = this.listView1.GetItemAt(e.X, e.Y);
            if (lv != null)
            {
                if (pointView.X != e.X || pointView.Y != e.Y)//比较当前位置和上一次鼠标的位置是否相同,防止tooltip因MouseMove事件不停刷新造成的闪烁问题,
                {
                    //toolTip.SetToolTip(listView1, "双击进入 " + lv.SubItems[0].Text);
                    toolTip.Show(lv.SubItems[0].Text, listView1, new Point(e.X, e.Y), 1000);
                    pointView.X = e.X;

                    pointView.Y = e.Y;

                    toolTip.Active = true;
                }
            }
            else
            {
                toolTip.Hide(listView1);//当鼠标位置无listviewitem时,自动隐藏tooltip
                pointView = new Point(e.X, e.Y);//存储本次的鼠标位置,为下次得位置比较准备
            }
            

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值