官网

http://www.hzhcontrols.com

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

GitHub:https://github.com/kwwwvagaa/NetWinformControl

码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492 

idkey=6e08741ef16fe53bf0314c1c9e336c4f626047943a8b76bac062361bab6b4f8d">

目录

https://www.cnblogs.com/bfyx/p/11364884.html

准备工作

列表控件将被拆分为2部分,一个元素,一个列表,列表需要支持主副标题,图标等

开始

首先定义一个数据源类(其实更好的是应该接受object,然后通过绑定字段反射绑定数据,这样就不需要这个数据源类了,这里偷懒了)

  /// <summary>
/// 列表实体
/// </summary>
[Serializable]
public class ListEntity
{
/// <summary>
/// 编码,唯一值
/// </summary>
public string ID { get; set; }
/// <summary>
/// 大标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 右侧更多按钮
/// </summary>
public bool ShowMoreBtn { get; set; }
/// <summary>
/// 右侧副标题
/// </summary>
public string Title2 { get; set; }
/// <summary>
/// 关联的数据源
/// </summary>
public object Source { get; set; }
}

我们创建元素控件,添加一个用户控件,命名UCListItemExt

需要提供一下属性

 [Description("标题"), Category("自定义")]
public string Title
{
get { return label1.Text; }
set { label1.Text = value; }
}
[Description("副标题"), Category("自定义")]
public string Title2
{
get { return label3.Text; }
set
{
label3.Text = value;
label3.Visible = !string.IsNullOrEmpty(value);
}
} [Description("标题字体"), Category("自定义")]
public Font TitleFont
{
get { return label1.Font; }
set
{
label1.Font = value;
}
} [Description("副标题字体"), Category("自定义")]
public Font Title2Font
{
get { return label3.Font; }
set
{
label3.Font = value;
}
} [Description("背景色"), Category("自定义")]
public Color ItemBackColor
{
get { return this.BackColor; }
set
{
this.BackColor = value;
}
} [Description("标题文本色"), Category("自定义")]
public Color ItemForeColor
{
get { return label1.ForeColor; }
set { label1.ForeColor = value; }
} [Description("副标题文本色"), Category("自定义")]
public Color ItemForeColor2
{
get { return label3.ForeColor; }
set { label3.ForeColor = value; }
} [Description("是否显示右侧更多箭头"), Category("自定义")]
public bool ShowMoreBtn
{
get { return label2.Visible; }
set { label2.Visible = value; ; }
} [Description("项选中事件"), Category("自定义")]
public event EventHandler ItemClick; /// <summary>
/// 数据源
/// </summary>
public ListEntity DataSource { get; private set; }

开放一个对外的设置数据源入口

 #region 设置数据
/// <summary>
/// 功能描述:设置数据
/// 作  者:HZH
/// 创建日期:2019-02-27 11:52:52
/// 任务编号:POS
/// </summary>
/// <param name="data">data</param>
public void SetData(ListEntity data)
{
this.Title = data.Title;
this.Title2 = data.Title2;
this.ShowMoreBtn = data.ShowMoreBtn;
DataSource = data;
}
#endregion

再处理一下点击事件

         private void item_MouseDown(object sender, MouseEventArgs e)
{
if (ItemClick != null)
{
ItemClick(this, e);
}
}

至此功能完成,看下完整代码

 // 版权所有  黄正辉  交流群:568015492   QQ:623128629
// 文件名称:UCListItemExt.cs
// 创建日期:2019-08-15 16:01:34
// 功能描述:List
// 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace HZH_Controls.Controls
{
[ToolboxItem(false)]
public partial class UCListItemExt : UserControl
{
[Description("标题"), Category("自定义")]
public string Title
{
get { return label1.Text; }
set { label1.Text = value; }
}
[Description("副标题"), Category("自定义")]
public string Title2
{
get { return label3.Text; }
set
{
label3.Text = value;
label3.Visible = !string.IsNullOrEmpty(value);
}
} [Description("标题字体"), Category("自定义")]
public Font TitleFont
{
get { return label1.Font; }
set
{
label1.Font = value;
}
} [Description("副标题字体"), Category("自定义")]
public Font Title2Font
{
get { return label3.Font; }
set
{
label3.Font = value;
}
} [Description("背景色"), Category("自定义")]
public Color ItemBackColor
{
get { return this.BackColor; }
set
{
this.BackColor = value;
}
} [Description("标题文本色"), Category("自定义")]
public Color ItemForeColor
{
get { return label1.ForeColor; }
set { label1.ForeColor = value; }
} [Description("副标题文本色"), Category("自定义")]
public Color ItemForeColor2
{
get { return label3.ForeColor; }
set { label3.ForeColor = value; }
} [Description("是否显示右侧更多箭头"), Category("自定义")]
public bool ShowMoreBtn
{
get { return label2.Visible; }
set { label2.Visible = value; ; }
} [Description("项选中事件"), Category("自定义")]
public event EventHandler ItemClick; /// <summary>
/// 数据源
/// </summary>
public ListEntity DataSource { get; private set; } public UCListItemExt()
{
InitializeComponent();
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();
} private void item_MouseDown(object sender, MouseEventArgs e)
{
if (ItemClick != null)
{
ItemClick(this, e);
}
} #region 设置数据
/// <summary>
/// 功能描述:设置数据
/// 作  者:HZH
/// 创建日期:2019-02-27 11:52:52
/// 任务编号:POS
/// </summary>
/// <param name="data">data</param>
public void SetData(ListEntity data)
{
this.Title = data.Title;
this.Title2 = data.Title2;
this.ShowMoreBtn = data.ShowMoreBtn;
DataSource = data;
}
#endregion
}
}
 namespace HZH_Controls.Controls
{
partial class UCListItemExt
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null; /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
} #region 组件设计器生成的代码 /// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UCListItemExt));
this.label1 = new System.Windows.Forms.Label();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.label3 = new System.Windows.Forms.Label();
this.splitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)()));
this.label1.Location = new System.Drawing.Point(, );
this.label1.Name = "label1";
this.label1.Padding = new System.Windows.Forms.Padding(, , , );
this.label1.Size = new System.Drawing.Size(, );
this.label1.TabIndex = ;
this.label1.Text = "label1";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.item_MouseDown);
//
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(, "setting_arrow.png");
//
// label3
//
this.label3.Dock = System.Windows.Forms.DockStyle.Right;
this.label3.Font = new System.Drawing.Font("微软雅黑", 14F);
this.label3.ForeColor = System.Drawing.Color.FromArgb(, , );
this.label3.Location = new System.Drawing.Point(, );
this.label3.Name = "label3";
this.label3.Padding = new System.Windows.Forms.Padding(, , , );
this.label3.Size = new System.Drawing.Size(, );
this.label3.TabIndex = ;
this.label3.Text = "label3";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.item_MouseDown);
//
// splitLine_H1
//
this.splitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)()))), ((int)(((byte)()))), ((int)(((byte)()))));
this.splitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.splitLine_H1.Location = new System.Drawing.Point(, );
this.splitLine_H1.MaximumSize = new System.Drawing.Size(, );
this.splitLine_H1.Name = "splitLine_H1";
this.splitLine_H1.Size = new System.Drawing.Size(, );
this.splitLine_H1.TabIndex = ;
//
// label2
//
this.label2.Dock = System.Windows.Forms.DockStyle.Right;
this.label2.ImageIndex = ;
this.label2.ImageList = this.imageList1;
this.label2.Location = new System.Drawing.Point(, );
this.label2.Name = "label2";
this.label2.Padding = new System.Windows.Forms.Padding(, , , );
this.label2.Size = new System.Drawing.Size(, );
this.label2.TabIndex = ;
this.label2.Visible = false;
this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.item_MouseDown);
//
// UCListItemExt
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.White;
this.Controls.Add(this.label1);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.splitLine_H1);
this.Name = "UCListItemExt";
this.Size = new System.Drawing.Size(, );
this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.Label label3;
private UCSplitLine_H splitLine_H1;
}
}

设计样式如下

接着我们需要创建列表控件,添加用户控件,命名UCListExt

看下需要哪些属性

 private Font _titleFont = new Font("微软雅黑", 15F);
[Description("标题字体"), Category("自定义")]
public Font TitleFont
{
get { return _titleFont; }
set { _titleFont = value; }
}
private Font _title2Font = new Font("微软雅黑", 14F);
[Description("副标题字体"), Category("自定义")]
public Font Title2Font
{
get { return _title2Font; }
set { _title2Font = value; }
} private Color _itemBackColor = Color.White;
[Description("标题背景色"), Category("自定义")]
public Color ItemBackColor
{
get { return _itemBackColor; }
set { _itemBackColor = value; }
} private Color _itemSelectedBackColor = Color.FromArgb(, , ); [Description("标题选中背景色"), Category("自定义")]
public Color ItemSelectedBackColor
{
get { return _itemSelectedBackColor; }
set { _itemSelectedBackColor = value; }
} private Color _itemForeColor = Color.Black; [Description("标题文本色"), Category("自定义")]
public Color ItemForeColor
{
get { return _itemForeColor; }
set { _itemForeColor = value; }
}
private Color _itemSelectedForeColor = Color.White; [Description("标题选中文本色"), Category("自定义")]
public Color ItemSelectedForeColor
{
get { return _itemSelectedForeColor; }
set { _itemSelectedForeColor = value; }
}
private Color _itemForeColor2 = Color.FromArgb(, , ); [Description("副标题文本色"), Category("自定义")]
public Color ItemForeColor2
{
get { return _itemForeColor2; }
set { _itemForeColor2 = value; }
}
private Color _itemSelectedForeColor2 = Color.White; [Description("副标题选中文本色"), Category("自定义")]
public Color ItemSelectedForeColor2
{
get { return _itemSelectedForeColor2; }
set { _itemSelectedForeColor2 = value; }
} private int _itemHeight = ; [Description("项高度"), Category("自定义")]
public int ItemHeight
{
get { return _itemHeight; }
set { _itemHeight = value; }
} private bool _autoSelectFirst = true;
[Description("自动选中第一项"), Category("自定义")]
public bool AutoSelectFirst
{
get { return _autoSelectFirst; }
set { _autoSelectFirst = value; }
}
public delegate void ItemClickEvent(UCListItemExt item);
[Description("选中项事件"), Category("自定义")]
public event ItemClickEvent ItemClick; private bool _selectedCanClick = false;
[Description("选中后是否可以再次触发点击事件"), Category("自定义")]
public bool SelectedCanClick
{
get { return _selectedCanClick; }
set { _selectedCanClick = value; }
} /// <summary>
/// 选中的节点
/// </summary>
public UCListItemExt SelectItem
{
get { return _current; }
}

向外暴露一个设置数据源的函数

 public void SetList(List<ListEntity> lst)
{
try
{
ControlHelper.FreezeControl(this, true);
this.Controls.Clear();
this.SuspendLayout();
UCListItemExt _first = null;
for (int i = lst.Count - ; i >= ; i--)
{
var item = lst[i];
UCListItemExt li = new UCListItemExt();
li.Height = _itemHeight;
li.TitleFont = _titleFont;
li.Title2Font = _title2Font;
li.ItemBackColor = _itemBackColor;
li.ItemForeColor = _itemForeColor;
li.ItemForeColor2 = _itemForeColor2;
li.Dock = DockStyle.Top;
li.SetData(item);
li.ItemClick += (s, e) => { SelectLabel((UCListItemExt)s); };
this.Controls.Add(li);
_first = li;
}
if (_autoSelectFirst)
SelectLabel(_first);
this.ResumeLayout(false); Timer timer = new Timer();
timer.Interval = ;
timer.Tick += (a, b) =>
{
timer.Enabled = false;
this.VerticalScroll.Value = ;
this.VerticalScroll.Value = ;
this.Refresh();
};
timer.Enabled = true;
}
finally
{
ControlHelper.FreezeControl(this, false);
}
}

选中项的处理

  private void SelectLabel(UCListItemExt li)
{
try
{
HZH_Controls.ControlHelper.FreezeControl(this, true);
this.FindForm().ActiveControl = this;
if (_current != null)
{
if (_current == li && !_selectedCanClick)
return;
_current.ItemBackColor = _itemBackColor;
_current.ItemForeColor = _itemForeColor;
_current.ItemForeColor2 = _itemForeColor2;
}
li.ItemBackColor = _itemSelectedBackColor;
li.ItemForeColor = _itemSelectedForeColor;
li.ItemForeColor2 = _itemSelectedForeColor2; _current = li;
if (ItemClick != null)
{
ItemClick(li);
}
}
finally
{
HZH_Controls.ControlHelper.FreezeControl(this, false);
}
}

完成,看下完整代码

 // 版权所有  黄正辉  交流群:568015492   QQ:623128629
// 文件名称:UCListExt.cs
// 创建日期:2019-08-15 16:01:22
// 功能描述:List
// 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace HZH_Controls.Controls
{
[DefaultEvent("ItemClick")]
public partial class UCListExt : UserControl
{
private Font _titleFont = new Font("微软雅黑", 15F);
[Description("标题字体"), Category("自定义")]
public Font TitleFont
{
get { return _titleFont; }
set { _titleFont = value; }
}
private Font _title2Font = new Font("微软雅黑", 14F);
[Description("副标题字体"), Category("自定义")]
public Font Title2Font
{
get { return _title2Font; }
set { _title2Font = value; }
} private Color _itemBackColor = Color.White;
[Description("标题背景色"), Category("自定义")]
public Color ItemBackColor
{
get { return _itemBackColor; }
set { _itemBackColor = value; }
} private Color _itemSelectedBackColor = Color.FromArgb(, , ); [Description("标题选中背景色"), Category("自定义")]
public Color ItemSelectedBackColor
{
get { return _itemSelectedBackColor; }
set { _itemSelectedBackColor = value; }
} private Color _itemForeColor = Color.Black; [Description("标题文本色"), Category("自定义")]
public Color ItemForeColor
{
get { return _itemForeColor; }
set { _itemForeColor = value; }
}
private Color _itemSelectedForeColor = Color.White; [Description("标题选中文本色"), Category("自定义")]
public Color ItemSelectedForeColor
{
get { return _itemSelectedForeColor; }
set { _itemSelectedForeColor = value; }
}
private Color _itemForeColor2 = Color.FromArgb(, , ); [Description("副标题文本色"), Category("自定义")]
public Color ItemForeColor2
{
get { return _itemForeColor2; }
set { _itemForeColor2 = value; }
}
private Color _itemSelectedForeColor2 = Color.White; [Description("副标题选中文本色"), Category("自定义")]
public Color ItemSelectedForeColor2
{
get { return _itemSelectedForeColor2; }
set { _itemSelectedForeColor2 = value; }
} private int _itemHeight = ; [Description("项高度"), Category("自定义")]
public int ItemHeight
{
get { return _itemHeight; }
set { _itemHeight = value; }
} private bool _autoSelectFirst = true;
[Description("自动选中第一项"), Category("自定义")]
public bool AutoSelectFirst
{
get { return _autoSelectFirst; }
set { _autoSelectFirst = value; }
}
public delegate void ItemClickEvent(UCListItemExt item);
[Description("选中项事件"), Category("自定义")]
public event ItemClickEvent ItemClick; private bool _selectedCanClick = false;
[Description("选中后是否可以再次触发点击事件"), Category("自定义")]
public bool SelectedCanClick
{
get { return _selectedCanClick; }
set { _selectedCanClick = value; }
} /// <summary>
/// 选中的节点
/// </summary>
public UCListItemExt SelectItem
{
get { return _current; }
}
UCListItemExt _current = null;
public UCListExt()
{
InitializeComponent();
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();
} public void SetList(List<ListEntity> lst)
{
try
{
ControlHelper.FreezeControl(this, true);
this.Controls.Clear();
this.SuspendLayout();
UCListItemExt _first = null;
for (int i = lst.Count - ; i >= ; i--)
{
var item = lst[i];
UCListItemExt li = new UCListItemExt();
li.Height = _itemHeight;
li.TitleFont = _titleFont;
li.Title2Font = _title2Font;
li.ItemBackColor = _itemBackColor;
li.ItemForeColor = _itemForeColor;
li.ItemForeColor2 = _itemForeColor2;
li.Dock = DockStyle.Top;
li.SetData(item);
li.ItemClick += (s, e) => { SelectLabel((UCListItemExt)s); };
this.Controls.Add(li);
_first = li;
}
if (_autoSelectFirst)
SelectLabel(_first);
this.ResumeLayout(false); Timer timer = new Timer();
timer.Interval = ;
timer.Tick += (a, b) =>
{
timer.Enabled = false;
this.VerticalScroll.Value = ;
this.VerticalScroll.Value = ;
this.Refresh();
};
timer.Enabled = true;
}
finally
{
ControlHelper.FreezeControl(this, false);
}
} private void SelectLabel(UCListItemExt li)
{
try
{
HZH_Controls.ControlHelper.FreezeControl(this, true);
this.FindForm().ActiveControl = this;
if (_current != null)
{
if (_current == li && !_selectedCanClick)
return;
_current.ItemBackColor = _itemBackColor;
_current.ItemForeColor = _itemForeColor;
_current.ItemForeColor2 = _itemForeColor2;
}
li.ItemBackColor = _itemSelectedBackColor;
li.ItemForeColor = _itemSelectedForeColor;
li.ItemForeColor2 = _itemSelectedForeColor2; _current = li;
if (ItemClick != null)
{
ItemClick(li);
}
}
finally
{
HZH_Controls.ControlHelper.FreezeControl(this, false);
}
} } }
 namespace HZH_Controls.Controls
{
partial class UCListExt
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null; /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
} #region 组件设计器生成的代码 /// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// ListExt
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.AutoScroll = true;
this.Name = "ListExt";
this.Size = new System.Drawing.Size(, );
this.ResumeLayout(false); } #endregion
}
}

用处及效果

调用示例

  List<ListEntity> lst = new List<ListEntity>();
for (int i = ; i < ; i++)
{
lst.Add(new ListEntity()
{
ID = i.ToString(),
Title = "选项" + i,
ShowMoreBtn = true,
Source = i
});
}
this.ucListExt1.SetList(lst);

最后的话

如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control 点个星 星吧

(十一)c#Winform自定义控件-列表的更多相关文章

  1. c#Winform自定义控件-目录

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  2. winform 自定义控件(高手)

    高手推荐:https://www.cnblogs.com/bfyx/p/11364884.html   c#Winform自定义控件-目录   前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件 ...

  3. (三十一)c#Winform自定义控件-文本框(四)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  4. (二十一)c#Winform自定义控件-气泡提示

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  5. (四十一)c#Winform自定义控件-进度条

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  6. (三十二)c#Winform自定义控件-表格

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  7. (三十三)c#Winform自定义控件-日期控件

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...

  8. (四十二)c#Winform自定义控件-进度条扩展

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  9. (四十七)c#Winform自定义控件-树表格(treeGrid)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

随机推荐

  1. TF项目实战(基于SSD目标检测)——人脸检测1

    SSD实战——人脸检测 Tensorflow 一 .人脸检测的困难: 1. 姿态问题 2.不同种族人, 3.光照 遮挡 带眼睛 4.视角不同 5. 不同尺度 二. 数据集介绍以及转化VOC: 1. F ...

  2. R030---手把手教程:你有一条RPA发送的工资条待查收

    ​一.缘起 前2天写了<R029---简述:用UiPath实现RPA(工作流程自动化)(基础知识篇)>,本篇作为补充. 实战出真知,以做代学,下面以一个HR的真实场景举例实践,用UiPat ...

  3. 找到linux中当前java的安装位置

    先看java -version $java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111 ...

  4. 个人永久性免费-Excel催化剂功能第34波-提取中国身份证信息、农历日期转换相关功能

    这两天又被刷朋友圈,又来了一个自主研发红芯浏览器,国产啊国产,这是谁的梦.就算国产了,自主了,无底线的夸大吹嘘无道德,企业如是,国家如是,大清已亡!再牛B的技术落在天天删敏感信息.无法治.无安全感可言 ...

  5. Golang 高效实践之defer、panic、recover实践

    前言 我们知道Golang处理异常是用error返回的方式,然后调用方根据error的值走不同的处理逻辑.但是,如果程序触发其他的严重异常,比如说数组越界,程序就要直接崩溃.Golang有没有一种异常 ...

  6. 2019年7月20日 - LeetCode0002

    https://leetcode-cn.com/problems/add-two-numbers/submissions/ 我的方法: /** * Definition for singly-link ...

  7. 6.2.初识Flutter应用之路由管理

    路由管理 路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewC ...

  8. [leetcode] 264. Ugly Number II (medium)

    263. Ugly Number的子母题 题目要求输出从1开始数,第n个ugly number是什么并且输出. 一开始想着1遍历到n直接判断,超时了. class Solution { public: ...

  9. 腾讯云centos7 从零搭建laravel项目

    目标,访问网站出现: -----------------------分割线---------------------------------------- 一.Laravel Homestead 环境 ...

  10. PyCharm 配置 Git 教程

    之前给大家介绍了 Git 安装及使用指南,今天再给大家介绍一下在 PyCharm 中使用 Git. 1 打开 File -> Settings -> Version Control -&g ...