勇哥注:
用户自定义界面用途非常广泛,其原理有点小神秘,本篇勇哥来聊聊这个话题。
什么是用户自定义界面呢?
首先我们看下VS的winform面板编辑器,它可以看做是一个用户自定义界面。
如下图所示:
用户左边拖控件,拖到form上,可以排放位置。选中控件,还可以在右边设置它的属性。
勇哥注:
用户自定义界面用途非常广泛,其原理有点小神秘,本篇勇哥来聊聊这个话题。
什么是用户自定义界面呢?
首先我们看下VS的winform面板编辑器,它可以看做是一个用户自定义界面。
如下图所示:
用户左边拖控件,拖到form上,可以排放位置。选中控件,还可以在右边设置它的属性。
在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

解决办法:
使用下面红框所示的卫语句即可。

勇哥注:
这个问题勇哥在网上找了许久。
假设A、B单元格都是下拉DataGridViewComboBoxColumn。
我想A单元格选中一个内容,B单元格进行刷新列表。
让datagridview的DataGridviewComboBoxColumn即可以下拉,还可以输入内容
这个需求是有必要的。
勇哥参考了一些网上的资料,证明winform还是可以实现此功能的。
虽然操作上有点不太方便,比如输入内容后回车不能结束编辑,需要点内外的单元格结束编辑。
但是好歹是实现的要求,而且不用重写一些方法。
效果如下:

勇哥注:
去除List的重复元素的问题是比较常见的需求,C#有标准的做法,以后不要自己写了。
public class Student
{
public string Name { get; private set; }
public int Id { get; private set; }
public string Hobby { get; private set; }
public Student(string name, int id, string hobby)
{
this.Name = name;
this.Id = id;
this.Hobby = hobby;
}
/// <summary>
/// 方便输出,重写ToString方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return string.Format("{0}\t{1}\t{2}", this.Name, this.Id, this.Hobby);
}
}
public class Compare : IEqualityComparer<Student>
{
public bool Equals(Student x, Student y)
{
return x.Id == y.Id;//可以自定义去重规则,此处将Id相同的就作为重复记录,不管学生的爱好是什么
}
public int GetHashCode(Student obj)
{
return obj.Id.GetHashCode();
}
}这个问题浪费了勇哥一个小时的时间。
即你在NodeMouseClick、Click事件中获取SelectedNode,有可能为null或者上一次的节点。
希望实现点击TreeView控件下的不同子节点,显示其对应的内容。
勇哥注:
IComparable 接口常用于排序。
比如可以用于List<T>.Sort()方法,对T是自定义的类型的数据结构做排序。
如果T是值类型,则有内建排序规则,不需要特殊处理。
勇哥注:
我们知道C#的集合有两类
Powered By Z-BlogPHP 1.7.3
Copyright www.skcircle.com Rights Reserved.