前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >winform笔记

winform笔记

作者头像
提莫队长
发布2019-02-21 15:44:51
1.5K0
发布2019-02-21 15:44:51
举报
文章被收录于专栏:刘晓杰刘晓杰

1.combobox 数据绑定

代码语言:javascript
复制
comboBox.DisplayMember = "需要读取的列1(name)"; //显示到comboBox的值
comboBox.ValueMember = "需要读取的列2(id)"; //comboBox真正的值
comboBox.DataSource = ds.Tables["虚拟列名"];//绑定数据源

2.FlowLayoutPanel支持鼠标滚轮滚动

FlowLayoutPanel控件不直接支持MouseWheel事件.即滚动滚轮也不会响应.所以必须手动来支持响应滚轮. FlowLayoutPanel控件继承于Panel控件,Panel控件也是直接不支持MouseWheel事件 你可以添加MouseWheel事件,然后写上支持滚动的功能.也可以直接重写该控件.这样可以复用该控件. 如果只支持MouseWheel事件,还是不一定在滚动滚轮的时候,就能引发MouseWheel事件.所以,必须让鼠标停留在控件上时,让控件处于输入焦点状态.这是,滚动滚轮就可以引发MouseWheel事件了.

代码语言:javascript
复制
        //添加两个事件
        autoLayout.Click += AutoLayout_Click;
        autoLayout.MouseWheel += AutoLayout_MouseWheel;

        private void AutoLayout_Click(object sender, EventArgs e)
        {
            // 在点击事件中获取焦点
            autoLayout.Focus();
        }

        private void AutoLayout_MouseWheel(object sender, MouseEventArgs e)
        {
            if (e.Delta < 0)
            {
                if (this.VerticalScroll.Maximum > this.VerticalScroll.Value + 50)
                    this.VerticalScroll.Value += 50;
                else
                    this.VerticalScroll.Value = this.VerticalScroll.Maximum;
            }
            else
            {
                if (this.VerticalScroll.Value > 50)
                    this.VerticalScroll.Value -= 50;
                else
                {
                    this.VerticalScroll.Value = 0;
                }
            }
        }

3.ListViewItem和ListViewSubItem关系

代码语言:javascript
复制
                item.Text = i.TITLE;
                item.SubItems.Add(i.CONTENT);
                item.SubItems.Add(i.ID);
                // SubItems[0]=item.Text,取数据的时候要注意
                // content就是SubItems[1]

4.如何移除自身

控件的Parent方法可以拿到父控件

代码语言:javascript
复制
        private void Button_Click(object sender, EventArgs e)
        {
            Button button = (Button)sender;
            button.Parent.Controls.Remove(button);
        }

5.ListView的选中问题

代码语言:javascript
复制
            //在此处设断点,发现点击不同的Item后,此事件居然执行了2次 
            //第一次是取消当前Item选中状态,导致整个ListView的SelectedIndices变为0
            //第二次才将新选中的Item设置为选中状态,SelectedIndices变为1
            //如果不加listview.SelectedIndices.Count>0判断,将导致获取listview.Items[]索引超界的异常
            if (DataListView.SelectedIndices != null && DataListView.SelectedIndices.Count > 0)
            {
                ListView.SelectedIndexCollection c = DataListView.SelectedIndices;
                DataListView.Items[c[0]]或者DataListView.SelectedItems[0]
                // do sonmething
            }

6.comboBox__SelectedIndexChanged多次触发

参考下文 http://blog.csdn.net/ruiqi317/article/details/6857542

7.DataGridView清空数据

代码语言:javascript
复制
DataTable  dt  =  (DataTable)dataGridView1.DataSource;
dt.Rows.Clear();
dataGridView1.DataSource  =  dt;  

8.弹出自定义对话框,并传值

(1)自己实现获取数据的方法 在dialog中定义获取数据的方法

代码语言:javascript
复制
public String getValue(){
    return "aaa";
}

然后在调用dialog的主程序中如下调用

代码语言:javascript
复制
Dialog dlg = new Dialog();  
DialogResult dr = dlg.ShowDialog();  
string value = dlg.getValue();  

这肯定会令人产生疑问,因为对话框Form已经关闭了,怎么还能调用其函数??? 其实,当窗体通过ShowDialog方法显示,并通过Close()函数进行关闭时,窗体资源不被释放。.可以参看MSDN: http://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.close.aspx

这样,主程序就获取了用户在自定义对话框的DialogResult值,以及用户的输入。

(2)解封装 主窗体定义一个类存放数据,这里仅用一个string代替 然后在dialog如下代码

代码语言:javascript
复制
this.DialogResult = DialogResult.OK;
Main mainForm = (Main)this.Owner;        //核心代码,将传递者解封装。
mainForm.str= "";                      //核心代码

然后主窗体

代码语言:javascript
复制
private String str;
......

DialogResult dialog_result = dialog.ShowDialog(this);//注意,这里的this是必须的。第一种方法this参数不是必须
if (dialog_result == DialogResult.OK)
{
    MessageBox.Show(str);
}
本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年11月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.combobox 数据绑定
  • 2.FlowLayoutPanel支持鼠标滚轮滚动
  • 3.ListViewItem和ListViewSubItem关系
  • 4.如何移除自身
  • 5.ListView的选中问题
  • 6.comboBox__SelectedIndexChanged多次触发
  • 7.DataGridView清空数据
  • 8.弹出自定义对话框,并传值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com