周思荣 發表於 2019-8-16 16:27:00

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

<h1>官网</h1>
<p>https://www.hzhcontrols.cn</p>
<h1>前提</h1>
<p>入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。</p>
<p>GitHub:https://github.com/kwwwvagaa/NetWinformControl</p>
<p>码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git</p>
<p>如果觉得写的还行,请点个 star 支持一下吧</p>
<p>欢迎前来交流探讨: 企鹅群568015492&nbsp;<img src="https://pub.idqqimg.com/wpa/images/group.png"></p>
<h1>目录</h1>
<p>https://www.cnblogs.com/bfyx/p/11364884.html</p>
<h1>准备工作</h1>
<p>表格控件将拆分为2部分,1:行元素控件,2:列表控件</p>
<p>为了具有更好的扩展性,更加的open,使用接口对行元素进行约束,当行样式或功能不满足你的需求的时候,可以自定义一个行元素,实现接口控件,然后将类型指定给列表控件即可</p>
<p>表格控件用到了分页控件,如果你还没有对分页控件进行了解,请移步查看</p>
<p>(十二)c#Winform自定义控件-分页控件</p>
<h1>开始</h1>
<p>定义一些辅助东西</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewCellEntity
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)">3</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> Title { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">4</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> Width { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">5</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> System.Windows.Forms.SizeType WidthType { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">6</span>
<span style="color: rgba(0, 128, 128, 1)">7</span>   }</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span>   <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventArgs : EventArgs
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)">3</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> Control CellControl { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">4</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> CellIndex { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">5</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> RowIndex { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">6</span>
<span style="color: rgba(0, 128, 128, 1)">7</span>
<span style="color: rgba(0, 128, 128, 1)">8</span>   }</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">   
</span><span style="color: rgba(0, 128, 128, 1)">2</span>   
</span><span style="color: rgba(0, 128, 128, 1)">3</span>   <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">delegate</span> <span style="color: rgba(0, 0, 255, 1)">void</span> DataGridViewEventHandler(<span style="color: rgba(0, 0, 255, 1)">object</span> sender, DataGridViewEventArgs e);</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span>   <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewColumnEntity
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)">3</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> HeadText { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">4</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> Width { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">5</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> System.Windows.Forms.SizeType WidthType { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">6</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> DataField { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">7</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> Func&lt;<span style="color: rgba(0, 0, 255, 1)">object</span>, <span style="color: rgba(0, 0, 255, 1)">string</span>&gt; Format { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">8</span>   }</pre>
</div>
<p>定义行接口</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">interface</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> CheckBox选中事件
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span>         <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler CheckBoxChangeEvent;
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 点击单元格事件
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">10</span>         <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler CellClick;
</span><span style="color: rgba(0, 128, 128, 1)">11</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">12</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 数据源改变事件
</span><span style="color: rgba(0, 128, 128, 1)">13</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">14</span>         <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler SourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)">15</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">16</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 列参数,用于创建列数和宽度
</span><span style="color: rgba(0, 128, 128, 1)">17</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">18</span>         List&lt;DataGridViewColumnEntity&gt; Columns { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">19</span>         <span style="color: rgba(0, 0, 255, 1)">bool</span> IsShowCheckBox { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">20</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">21</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 是否选中
</span><span style="color: rgba(0, 128, 128, 1)">22</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">23</span>         <span style="color: rgba(0, 0, 255, 1)">bool</span> IsChecked { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">24</span>
<span style="color: rgba(0, 128, 128, 1)">25</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">26</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 数据源
</span><span style="color: rgba(0, 128, 128, 1)">27</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">28</span>         <span style="color: rgba(0, 0, 255, 1)">object</span> DataSource { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">29</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">30</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 添加单元格元素,仅做添加控件操作,不做数据绑定,数据绑定使用BindingCells
</span><span style="color: rgba(0, 128, 128, 1)">31</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">32</span>         <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ReloadCells();
</span><span style="color: rgba(0, 128, 128, 1)">33</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">34</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 绑定数据到Cell
</span><span style="color: rgba(0, 128, 128, 1)">35</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">36</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="intIndex"&gt;</span><span style="color: rgba(0, 128, 0, 1)">cell下标</span><span style="color: rgba(128, 128, 128, 1)">&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">37</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;returns&gt;</span><span style="color: rgba(0, 128, 0, 1)">返回true则表示已处理过,否则将进行默认绑定(通常只针对有Text值的控件)</span><span style="color: rgba(128, 128, 128, 1)">&lt;/returns&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">38</span>         <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> BindingCellData();
</span><span style="color: rgba(0, 128, 128, 1)">39</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">40</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 设置选中状态,通常为设置颜色即可
</span><span style="color: rgba(0, 128, 128, 1)">41</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">42</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="blnSelected"&gt;</span><span style="color: rgba(0, 128, 0, 1)">是否选中</span><span style="color: rgba(128, 128, 128, 1)">&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">43</span>         <span style="color: rgba(0, 0, 255, 1)">void</span> SetSelect(<span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> blnSelected);
</span><span style="color: rgba(0, 128, 128, 1)">44</span>   }</pre>
</div>
<p>创建行控件</p>
<p>添加一个用户控件,命名UCDataGridViewRow,实现接口IDataGridViewRow</p>
<p>属性</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span>   <span style="color: rgba(0, 0, 255, 1)">#region</span> 属性
<span style="color: rgba(0, 128, 128, 1)"> 2</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler CheckBoxChangeEvent;
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler CellClick;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler SourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)"> Columns
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">10</span>             <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">11</span>             <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> DataSource
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">16</span>             <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">17</span>             <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">19</span>
<span style="color: rgba(0, 128, 128, 1)">20</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsShowCheckBox
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">22</span>             <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">23</span>             <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">25</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> m_isChecked;
</span><span style="color: rgba(0, 128, 128, 1)">26</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsChecked
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">28</span>             <span style="color: rgba(0, 0, 255, 1)">get</span>
<span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">30</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_isChecked;
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">32</span>
<span style="color: rgba(0, 128, 128, 1)">33</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">35</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_isChecked !=<span style="color: rgba(0, 0, 0, 1)"> value)
</span><span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">37</span>                     m_isChecked =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">38</span>                     (<span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Controls.Find(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">check</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">false</span>)[<span style="color: rgba(128, 0, 128, 1)">0</span>] <span style="color: rgba(0, 0, 255, 1)">as</span> UCCheckBox).Checked =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">42</span>
<span style="color: rgba(0, 128, 128, 1)">43</span>
<span style="color: rgba(0, 128, 128, 1)">44</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span></pre>
</div>
<p>实现接口</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span>    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> BindingCellData()
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">3</span>             <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; Columns.Count; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">5</span>               DataGridViewColumnEntity com =<span style="color: rgba(0, 0, 0, 1)"> Columns;
</span><span style="color: rgba(0, 128, 128, 1)">6</span>               <span style="color: rgba(0, 0, 255, 1)">var</span> cs = <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Controls.Find(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lbl_</span><span style="color: rgba(128, 0, 0, 1)">"</span> + com.DataField, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">7</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (cs != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; cs.Length &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">9</span>                     <span style="color: rgba(0, 0, 255, 1)">var</span> pro =<span style="color: rgba(0, 0, 0, 1)"> DataSource.GetType().GetProperty(com.DataField);
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (pro != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span>                         <span style="color: rgba(0, 0, 255, 1)">var</span> value = pro.GetValue(DataSource, <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (com.Format != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span>                           cs[<span style="color: rgba(128, 0, 128, 1)">0</span>].Text =<span style="color: rgba(0, 0, 0, 1)"> com.Format(value);
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span>                           cs[<span style="color: rgba(128, 0, 128, 1)">0</span>].Text =<span style="color: rgba(0, 0, 0, 1)"> value.ToStringExt();
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span>
<span style="color: rgba(0, 128, 128, 1)"> 26</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> SetSelect(<span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> blnSelected)
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (blnSelected)
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.BackColor = Color.FromArgb(<span style="color: rgba(128, 0, 128, 1)">255</span>, <span style="color: rgba(128, 0, 128, 1)">247</span>, <span style="color: rgba(128, 0, 128, 1)">245</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span>             <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.BackColor =<span style="color: rgba(0, 0, 0, 1)"> Color.Transparent;
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span>
<span style="color: rgba(0, 128, 128, 1)"> 38</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ReloadCells()
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panCells.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panCells.ColumnStyles.Clear();
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span>
<span style="color: rgba(0, 128, 128, 1)"> 46</span>               <span style="color: rgba(0, 0, 255, 1)">int</span> intColumnsCount =<span style="color: rgba(0, 0, 0, 1)"> Columns.Count();
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (Columns != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; intColumnsCount &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (IsShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span>                         intColumnsCount++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnCount =<span style="color: rgba(0, 0, 0, 1)"> intColumnsCount;
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span>                     <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; intColumnsCount; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span>                         Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (i == <span style="color: rgba(128, 0, 128, 1)">0</span> &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> IsShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F));
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span>
<span style="color: rgba(0, 128, 128, 1)"> 61</span>                           UCCheckBox box = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> UCCheckBox();
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span>                           box.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">check</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span>                           box.TextValue = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span>                           box.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> Size(<span style="color: rgba(128, 0, 128, 1)">30</span>, <span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span>                           box.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span>                           box.CheckedChangeEvent += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span>                                 IsChecked =<span style="color: rgba(0, 0, 0, 1)"> box.Checked;
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span>                                 <span style="color: rgba(0, 0, 255, 1)">if</span> (CheckBoxChangeEvent != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span> <span style="color: rgba(0, 0, 0, 1)">                              {
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span>                                     CheckBoxChangeEvent(a, <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventArgs()
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 0, 1)">                                    {
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span>                                       CellControl =<span style="color: rgba(0, 0, 0, 1)"> box,
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span>                                       CellIndex = <span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)"> 75</span> <span style="color: rgba(0, 0, 0, 1)">                                    });
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> <span style="color: rgba(0, 0, 0, 1)">                              }
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> box;
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>                           <span style="color: rgba(0, 0, 255, 1)">var</span> item = Columns;
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(item.WidthType, item.Width));
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span>
<span style="color: rgba(0, 128, 128, 1)"> 85</span>                           Label lbl = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Label();
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span>                           lbl.Tag = i - (IsShowCheckBox ? <span style="color: rgba(128, 0, 128, 1)">1</span> : <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>                           lbl.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lbl_</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> item.DataField;
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span>                           lbl.Font = <span style="color: rgba(0, 0, 255, 1)">new</span> Font(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">微软雅黑</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span>                           lbl.ForeColor =<span style="color: rgba(0, 0, 0, 1)"> Color.Black;
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span>                           lbl.AutoSize = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span>                           lbl.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span>                           lbl.TextAlign =<span style="color: rgba(0, 0, 0, 1)"> ContentAlignment.MiddleCenter;
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span>                           lbl.MouseDown += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span> <span style="color: rgba(0, 0, 0, 1)">                              Item_MouseDown(a, b);
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> lbl;
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Controls.Add(c, i, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">101</span>
<span style="color: rgba(0, 128, 128, 1)">102</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">104</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">105</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">106</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">107</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">108</span>         }</pre>
</div>
<p>节点选中事件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span>    <span style="color: rgba(0, 0, 255, 1)">void</span> Item_MouseDown(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, MouseEventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (CellClick != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>               CellClick(sender, <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventArgs()
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>                     CellControl = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>                     CellIndex = (sender <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control).Tag.ToInt()
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">11</span>         }</pre>
</div>
<p>完整的代码</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img alt="" id="code_img_opened_2a2f4db4-1f29-4eb0-9073-fcd61bea1bae" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_2a2f4db4-1f29-4eb0-9073-fcd61bea1bae" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 版权所有黄正辉交流群:568015492   QQ:623128629
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 文件名称:UCDataGridViewRow.cs
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建日期:2019-08-15 15:59:31
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 功能描述:DataGridView
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 项目地址:</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://gitee.com/kwwwvagaa/net_winform_custom_control</span>
<span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System;
</span><span style="color: rgba(0, 128, 128, 1)">7</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Collections.Generic;
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.ComponentModel;
</span><span style="color: rgba(0, 128, 128, 1)">9</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Drawing;
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Data;
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Linq;
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Text;
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms;
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span>
<span style="color: rgba(0, 128, 128, 1)"> 15</span> <span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> HZH_Controls.Controls
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span>   
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span>   <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">partial</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> UCDataGridViewRow : UserControl, IDataGridViewRow
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span>
<span style="color: rgba(0, 128, 128, 1)"> 21</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 属性
<span style="color: rgba(0, 128, 128, 1)"> 22</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler CheckBoxChangeEvent;
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span>
<span style="color: rgba(0, 128, 128, 1)"> 24</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler CellClick;
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span>
<span style="color: rgba(0, 128, 128, 1)"> 26</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler SourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span>
<span style="color: rgba(0, 128, 128, 1)"> 28</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)"> Columns
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span>             <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>             <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span>
<span style="color: rgba(0, 128, 128, 1)"> 34</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> DataSource
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span>             <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span>             <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span>
<span style="color: rgba(0, 128, 128, 1)"> 40</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsShowCheckBox
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span>             <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span>             <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> m_isChecked;
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsChecked
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span>             <span style="color: rgba(0, 0, 255, 1)">get</span>
<span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_isChecked;
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>
<span style="color: rgba(0, 128, 128, 1)"> 53</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 54</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_isChecked !=<span style="color: rgba(0, 0, 0, 1)"> value)
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span>                     m_isChecked =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span>                     (<span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Controls.Find(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">check</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">false</span>)[<span style="color: rgba(128, 0, 128, 1)">0</span>] <span style="color: rgba(0, 0, 255, 1)">as</span> UCCheckBox).Checked =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span>
<span style="color: rgba(0, 128, 128, 1)"> 63</span>
<span style="color: rgba(0, 128, 128, 1)"> 64</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)"> 65</span>
<span style="color: rgba(0, 128, 128, 1)"> 66</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> UCDataGridViewRow()
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 0, 0, 1)">            InitializeComponent();
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span>
<span style="color: rgba(0, 128, 128, 1)"> 71</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> BindingCellData()
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span>             <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; Columns.Count; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span>               DataGridViewColumnEntity com =<span style="color: rgba(0, 0, 0, 1)"> Columns;
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span>               <span style="color: rgba(0, 0, 255, 1)">var</span> cs = <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Controls.Find(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lbl_</span><span style="color: rgba(128, 0, 0, 1)">"</span> + com.DataField, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (cs != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; cs.Length &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span>                     <span style="color: rgba(0, 0, 255, 1)">var</span> pro =<span style="color: rgba(0, 0, 0, 1)"> DataSource.GetType().GetProperty(com.DataField);
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (pro != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>                         <span style="color: rgba(0, 0, 255, 1)">var</span> value = pro.GetValue(DataSource, <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (com.Format != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span>                           cs[<span style="color: rgba(128, 0, 128, 1)">0</span>].Text =<span style="color: rgba(0, 0, 0, 1)"> com.Format(value);
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 88</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span>                           cs[<span style="color: rgba(128, 0, 128, 1)">0</span>].Text =<span style="color: rgba(0, 0, 0, 1)"> value.ToStringExt();
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span>
<span style="color: rgba(0, 128, 128, 1)"> 96</span>         <span style="color: rgba(0, 0, 255, 1)">void</span> Item_MouseDown(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, MouseEventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (CellClick != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">100</span>               CellClick(sender, <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventArgs()
</span><span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">102</span>                     CellControl = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">103</span>                     CellIndex = (sender <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control).Tag.ToInt()
</span><span style="color: rgba(0, 128, 128, 1)">104</span> <span style="color: rgba(0, 0, 0, 1)">                });
</span><span style="color: rgba(0, 128, 128, 1)">105</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">106</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">107</span>
<span style="color: rgba(0, 128, 128, 1)">108</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> SetSelect(<span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> blnSelected)
</span><span style="color: rgba(0, 128, 128, 1)">109</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">110</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (blnSelected)
</span><span style="color: rgba(0, 128, 128, 1)">111</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">112</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.BackColor = Color.FromArgb(<span style="color: rgba(128, 0, 128, 1)">255</span>, <span style="color: rgba(128, 0, 128, 1)">247</span>, <span style="color: rgba(128, 0, 128, 1)">245</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">113</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">114</span>             <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">115</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">116</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.BackColor =<span style="color: rgba(0, 0, 0, 1)"> Color.Transparent;
</span><span style="color: rgba(0, 128, 128, 1)">117</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">118</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">119</span>
<span style="color: rgba(0, 128, 128, 1)">120</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ReloadCells()
</span><span style="color: rgba(0, 128, 128, 1)">121</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">122</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)">123</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">124</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">125</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panCells.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">126</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panCells.ColumnStyles.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">127</span>
<span style="color: rgba(0, 128, 128, 1)">128</span>               <span style="color: rgba(0, 0, 255, 1)">int</span> intColumnsCount =<span style="color: rgba(0, 0, 0, 1)"> Columns.Count();
</span><span style="color: rgba(0, 128, 128, 1)">129</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (Columns != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; intColumnsCount &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">130</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">131</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (IsShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">132</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">133</span>                         intColumnsCount++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">135</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnCount =<span style="color: rgba(0, 0, 0, 1)"> intColumnsCount;
</span><span style="color: rgba(0, 128, 128, 1)">136</span>                     <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; intColumnsCount; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">137</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">138</span>                         Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">139</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (i == <span style="color: rgba(128, 0, 128, 1)">0</span> &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> IsShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">140</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">141</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F));
</span><span style="color: rgba(0, 128, 128, 1)">142</span>
<span style="color: rgba(0, 128, 128, 1)">143</span>                           UCCheckBox box = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> UCCheckBox();
</span><span style="color: rgba(0, 128, 128, 1)">144</span>                           box.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">check</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">145</span>                           box.TextValue = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">146</span>                           box.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> Size(<span style="color: rgba(128, 0, 128, 1)">30</span>, <span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">147</span>                           box.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">148</span>                           box.CheckedChangeEvent += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">150</span>                                 IsChecked =<span style="color: rgba(0, 0, 0, 1)"> box.Checked;
</span><span style="color: rgba(0, 128, 128, 1)">151</span>                                 <span style="color: rgba(0, 0, 255, 1)">if</span> (CheckBoxChangeEvent != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">152</span> <span style="color: rgba(0, 0, 0, 1)">                              {
</span><span style="color: rgba(0, 128, 128, 1)">153</span>                                     CheckBoxChangeEvent(a, <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventArgs()
</span><span style="color: rgba(0, 128, 128, 1)">154</span> <span style="color: rgba(0, 0, 0, 1)">                                    {
</span><span style="color: rgba(0, 128, 128, 1)">155</span>                                       CellControl =<span style="color: rgba(0, 0, 0, 1)"> box,
</span><span style="color: rgba(0, 128, 128, 1)">156</span>                                       CellIndex = <span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)">157</span> <span style="color: rgba(0, 0, 0, 1)">                                    });
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)">                              }
</span><span style="color: rgba(0, 128, 128, 1)">159</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)">160</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> box;
</span><span style="color: rgba(0, 128, 128, 1)">161</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">162</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">163</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">164</span>                           <span style="color: rgba(0, 0, 255, 1)">var</span> item = Columns;
</span><span style="color: rgba(0, 128, 128, 1)">165</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(item.WidthType, item.Width));
</span><span style="color: rgba(0, 128, 128, 1)">166</span>
<span style="color: rgba(0, 128, 128, 1)">167</span>                           Label lbl = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Label();
</span><span style="color: rgba(0, 128, 128, 1)">168</span>                           lbl.Tag = i - (IsShowCheckBox ? <span style="color: rgba(128, 0, 128, 1)">1</span> : <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">169</span>                           lbl.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lbl_</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> item.DataField;
</span><span style="color: rgba(0, 128, 128, 1)">170</span>                           lbl.Font = <span style="color: rgba(0, 0, 255, 1)">new</span> Font(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">微软雅黑</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">171</span>                           lbl.ForeColor =<span style="color: rgba(0, 0, 0, 1)"> Color.Black;
</span><span style="color: rgba(0, 128, 128, 1)">172</span>                           lbl.AutoSize = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">173</span>                           lbl.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">174</span>                           lbl.TextAlign =<span style="color: rgba(0, 0, 0, 1)"> ContentAlignment.MiddleCenter;
</span><span style="color: rgba(0, 128, 128, 1)">175</span>                           lbl.MouseDown += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)">176</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">177</span> <span style="color: rgba(0, 0, 0, 1)">                              Item_MouseDown(a, b);
</span><span style="color: rgba(0, 128, 128, 1)">178</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)">179</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> lbl;
</span><span style="color: rgba(0, 128, 128, 1)">180</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">181</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Controls.Add(c, i, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">182</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">183</span>
<span style="color: rgba(0, 128, 128, 1)">184</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">185</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">186</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">187</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">188</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">189</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">190</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">191</span>
<span style="color: rgba(0, 128, 128, 1)">192</span>
<span style="color: rgba(0, 128, 128, 1)">193</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">194</span> }</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<div class="cnblogs_code"><img alt="" id="code_img_closed_a3f77a5d-c0e6-4ca6-a5dd-98ebda0467ba" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img alt="" id="code_img_opened_a3f77a5d-c0e6-4ca6-a5dd-98ebda0467ba" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_a3f77a5d-c0e6-4ca6-a5dd-98ebda0467ba" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> HZH_Controls.Controls
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>   <span style="color: rgba(0, 0, 255, 1)">partial</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> UCDataGridViewRow
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 必需的设计器变量。
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> System.ComponentModel.IContainer components = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">11</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 清理所有正在使用的资源。
</span><span style="color: rgba(0, 128, 128, 1)">12</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">13</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="disposing"&gt;</span><span style="color: rgba(0, 128, 0, 1)">如果应释放托管资源,为 true;否则为 false。</span><span style="color: rgba(128, 128, 128, 1)">&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">14</span>         <span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">override</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Dispose(<span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> disposing)
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">16</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (disposing &amp;&amp; (components != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">                components.Dispose();
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">20</span>             <span style="color: rgba(0, 0, 255, 1)">base</span><span style="color: rgba(0, 0, 0, 1)">.Dispose(disposing);
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">22</span>
<span style="color: rgba(0, 128, 128, 1)">23</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 组件设计器生成的代码
<span style="color: rgba(0, 128, 128, 1)">24</span>
<span style="color: rgba(0, 128, 128, 1)">25</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">26</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 设计器支持所需的方法 - 不要
</span><span style="color: rgba(0, 128, 128, 1)">27</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 使用代码编辑器修改此方法的内容。
</span><span style="color: rgba(0, 128, 128, 1)">28</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">29</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> InitializeComponent()
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">31</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1 = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> HZH_Controls.Controls.UCSplitLine_H();
</span><span style="color: rgba(0, 128, 128, 1)">32</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.TableLayoutPanel();
</span><span style="color: rgba(0, 128, 128, 1)">33</span>             <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SuspendLayout();
</span><span style="color: rgba(0, 128, 128, 1)">34</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)">35</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> ucSplitLine_H1
</span><span style="color: rgba(0, 128, 128, 1)">36</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)">37</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((<span style="color: rgba(0, 0, 255, 1)">int</span>)(((<span style="color: rgba(0, 0, 255, 1)">byte</span>)(<span style="color: rgba(128, 0, 128, 1)">232</span>)))), ((<span style="color: rgba(0, 0, 255, 1)">int</span>)(((<span style="color: rgba(0, 0, 255, 1)">byte</span>)(<span style="color: rgba(128, 0, 128, 1)">232</span>)))), ((<span style="color: rgba(0, 0, 255, 1)">int</span>)(((<span style="color: rgba(0, 0, 255, 1)">byte</span>)(<span style="color: rgba(128, 0, 128, 1)">232</span><span style="color: rgba(0, 0, 0, 1)">)))));
</span><span style="color: rgba(0, 128, 128, 1)">38</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Bottom;
</span><span style="color: rgba(0, 128, 128, 1)">39</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">55</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">40</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ucSplitLine_H1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">41</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">661</span>, <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">42</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.TabIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">43</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.TabStop = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">44</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)">45</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> panCells
</span><span style="color: rgba(0, 128, 128, 1)">46</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)">47</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnCount = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">48</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
</span><span style="color: rgba(0, 128, 128, 1)">49</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
</span><span style="color: rgba(0, 128, 128, 1)">50</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">51</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">52</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panCells</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">53</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.RowCount = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">54</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.RowStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
</span><span style="color: rgba(0, 128, 128, 1)">55</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.RowStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
</span><span style="color: rgba(0, 128, 128, 1)">56</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">661</span>, <span style="color: rgba(128, 0, 128, 1)">55</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">57</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panCells.TabIndex = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">58</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)">59</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> UCDataGridViewItem
</span><span style="color: rgba(0, 128, 128, 1)">60</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)">61</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.AutoScaleMode =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.AutoScaleMode.None;
</span><span style="color: rgba(0, 128, 128, 1)">62</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.BackColor =<span style="color: rgba(0, 0, 0, 1)"> System.Drawing.Color.White;
</span><span style="color: rgba(0, 128, 128, 1)">63</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panCells);
</span><span style="color: rgba(0, 128, 128, 1)">64</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.ucSplitLine_H1);
</span><span style="color: rgba(0, 128, 128, 1)">65</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">UCDataGridViewItem</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">66</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">661</span>, <span style="color: rgba(128, 0, 128, 1)">56</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">67</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ResumeLayout(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">68</span>
<span style="color: rgba(0, 128, 128, 1)">69</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">70</span>
<span style="color: rgba(0, 128, 128, 1)">71</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">72</span>
<span style="color: rgba(0, 128, 128, 1)">73</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> UCSplitLine_H ucSplitLine_H1;
</span><span style="color: rgba(0, 128, 128, 1)">74</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.TableLayoutPanel panCells;
</span><span style="color: rgba(0, 128, 128, 1)">75</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">76</span> }</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>接下来就是列表控件了</p>
<p>添加一个用户控件,命名UCDataGridView</p>
<p>属性</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span><span style="color: rgba(0, 0, 255, 1)">#region</span> 属性
<span style="color: rgba(0, 128, 128, 1)">2</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> Font m_headFont = <span style="color: rgba(0, 0, 255, 1)">new</span> Font(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">微软雅黑</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, 12F);
</span><span style="color: rgba(0, 128, 128, 1)">3</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">4</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 标题字体
</span><span style="color: rgba(0, 128, 128, 1)">5</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">6</span>         
</span><span style="color: rgba(0, 128, 128, 1)">7</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Font HeadFont
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">9</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_headFont; }
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span>             <span style="color: rgba(0, 0, 255, 1)">set</span> { m_headFont =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> Color m_headTextColor =<span style="color: rgba(0, 0, 0, 1)"> Color.Black;
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 14</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 标题字体颜色
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 16</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Color HeadTextColor
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_headTextColor; }
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span>             <span style="color: rgba(0, 0, 255, 1)">set</span> { m_headTextColor =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span>
<span style="color: rgba(0, 128, 128, 1)"> 23</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">bool</span> m_isShowHead = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 25</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 是否显示标题
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 27</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsShowHead
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_isShowHead; }
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span>               m_isShowHead =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span>               panHead.Visible =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_page != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)">                  ResetShowCount();
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span>                     m_page.PageSize =<span style="color: rgba(0, 0, 0, 1)"> m_showCount;
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">int</span> m_headHeight = <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 44</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 标题高度
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 46</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> HeadHeight
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_headHeight; }
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>               m_headHeight =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span>               panHead.Height =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span>
<span style="color: rgba(0, 128, 128, 1)"> 57</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">bool</span> m_isShowCheckBox = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 59</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 是否显示复选框
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 61</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsShowCheckBox
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox; }
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 66</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value !=<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span>                     m_isShowCheckBox =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span> <span style="color: rgba(0, 0, 0, 1)">                  LoadColumns();
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span>
<span style="color: rgba(0, 128, 128, 1)"> 75</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">int</span> m_rowHeight = <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 77</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 行高
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 79</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> RowHeight
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_rowHeight; }
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span>             <span style="color: rgba(0, 0, 255, 1)">set</span> { m_rowHeight =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span>
<span style="color: rgba(0, 128, 128, 1)"> 86</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">int</span> m_showCount = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 88</span>         <span style="color: rgba(128, 128, 128, 1)">///</span>
<span style="color: rgba(0, 128, 128, 1)"> 89</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 90</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ShowCount
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_showCount; }
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span>             <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 95</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span>               m_showCount =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_page != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>                     m_page.PageSize =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">102</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">103</span>
<span style="color: rgba(0, 128, 128, 1)">104</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)"> m_columns;
</span><span style="color: rgba(0, 128, 128, 1)">105</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">106</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 列
</span><span style="color: rgba(0, 128, 128, 1)">107</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">108</span>         
</span><span style="color: rgba(0, 128, 128, 1)">109</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)"> Columns
</span><span style="color: rgba(0, 128, 128, 1)">110</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">111</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_columns; }
</span><span style="color: rgba(0, 128, 128, 1)">112</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">113</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">114</span>               m_columns =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">115</span> <span style="color: rgba(0, 0, 0, 1)">                LoadColumns();
</span><span style="color: rgba(0, 128, 128, 1)">116</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">117</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">118</span>
<span style="color: rgba(0, 128, 128, 1)">119</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> m_dataSource;
</span><span style="color: rgba(0, 128, 128, 1)">120</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">121</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 数据源,支持列表或table,如果使用翻页控件,请使用翻页控件的DataSource
</span><span style="color: rgba(0, 128, 128, 1)">122</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">123</span>         
</span><span style="color: rgba(0, 128, 128, 1)">124</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> DataSource
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">126</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_dataSource; }
</span><span style="color: rgba(0, 128, 128, 1)">127</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">128</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">129</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">130</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">131</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (!(m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span> DataTable) &amp;&amp; (!<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(IList).IsAssignableFrom(value.GetType())))
</span><span style="color: rgba(0, 128, 128, 1)">132</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">133</span>                     <span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">数据源不是有效的数据类型,请使用Datatable或列表</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">135</span>
<span style="color: rgba(0, 128, 128, 1)">136</span>               m_dataSource =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">137</span> <span style="color: rgba(0, 0, 0, 1)">                ReloadSource();
</span><span style="color: rgba(0, 128, 128, 1)">138</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">139</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">140</span>
<span style="color: rgba(0, 128, 128, 1)">141</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;IDataGridViewRow&gt; Rows { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">142</span>
<span style="color: rgba(0, 128, 128, 1)">143</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> Type m_rowType = <span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(UCDataGridViewRow);
</span><span style="color: rgba(0, 128, 128, 1)">144</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">145</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 行元素类型,默认UCDataGridViewItem
</span><span style="color: rgba(0, 128, 128, 1)">146</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">147</span>         
</span><span style="color: rgba(0, 128, 128, 1)">148</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Type RowType
</span><span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">150</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_rowType; }
</span><span style="color: rgba(0, 128, 128, 1)">151</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">152</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">153</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">154</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">155</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">typeof</span>(IDataGridViewRow).IsAssignableFrom(value) || !value.IsSubclassOf(<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(Control)))
</span><span style="color: rgba(0, 128, 128, 1)">156</span>                     <span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">行控件没有实现IDataGridViewRow接口</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">157</span>               m_rowType =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">159</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">160</span>         IDataGridViewRow m_selectRow = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">161</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">162</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中的节点
</span><span style="color: rgba(0, 128, 128, 1)">163</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">164</span>         
</span><span style="color: rgba(0, 128, 128, 1)">165</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow SelectRow
</span><span style="color: rgba(0, 128, 128, 1)">166</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">167</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_selectRow; }
</span><span style="color: rgba(0, 128, 128, 1)">168</span>             <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">set</span> { m_selectRow =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)">169</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">170</span>
<span style="color: rgba(0, 128, 128, 1)">171</span>
<span style="color: rgba(0, 128, 128, 1)">172</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">173</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中的行,如果显示CheckBox,则以CheckBox选中为准
</span><span style="color: rgba(0, 128, 128, 1)">174</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">175</span>         
</span><span style="color: rgba(0, 128, 128, 1)">176</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;IDataGridViewRow&gt;<span style="color: rgba(0, 0, 0, 1)"> SelectRows
</span><span style="color: rgba(0, 128, 128, 1)">177</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">178</span>             <span style="color: rgba(0, 0, 255, 1)">get</span>
<span style="color: rgba(0, 128, 128, 1)">179</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">180</span>               <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">181</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">182</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span> Rows.FindAll(p =&gt;<span style="color: rgba(0, 0, 0, 1)"> p.IsChecked);
</span><span style="color: rgba(0, 128, 128, 1)">183</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">184</span>               <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">185</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;IDataGridViewRow&gt;<span style="color: rgba(0, 0, 0, 1)">() { m_selectRow };
</span><span style="color: rgba(0, 128, 128, 1)">186</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">187</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">188</span>
<span style="color: rgba(0, 128, 128, 1)">189</span>
<span style="color: rgba(0, 128, 128, 1)">190</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> UCPagerControlBase m_page = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">191</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">192</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 翻页控件
</span><span style="color: rgba(0, 128, 128, 1)">193</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">194</span>         
</span><span style="color: rgba(0, 128, 128, 1)">195</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> UCPagerControlBase Page
</span><span style="color: rgba(0, 128, 128, 1)">196</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">197</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_page; }
</span><span style="color: rgba(0, 128, 128, 1)">198</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">199</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">200</span>               m_page =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">201</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">202</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">203</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">typeof</span>(IPageControl).IsAssignableFrom(value.GetType()) || !value.GetType().IsSubclassOf(<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(UCPagerControlBase)))
</span><span style="color: rgba(0, 128, 128, 1)">204</span>                         <span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">翻页控件没有继承UCPagerControlBase</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">205</span>                     panPage.Visible = value != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">206</span>                     m_page.ShowSourceChanged +=<span style="color: rgba(0, 0, 0, 1)"> page_ShowSourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)">207</span>                     m_page.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">208</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panPage.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">209</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panPage.Controls.Add(m_page);
</span><span style="color: rgba(0, 128, 128, 1)">210</span> <span style="color: rgba(0, 0, 0, 1)">                  ResetShowCount();
</span><span style="color: rgba(0, 128, 128, 1)">211</span>                     m_page.PageSize =<span style="color: rgba(0, 0, 0, 1)"> ShowCount;
</span><span style="color: rgba(0, 128, 128, 1)">212</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span>.DataSource =<span style="color: rgba(0, 0, 0, 1)"> m_page.GetCurrentSource();
</span><span style="color: rgba(0, 128, 128, 1)">213</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">214</span>               <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">215</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">216</span>                     m_page = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">217</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">218</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">219</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">220</span>
<span style="color: rgba(0, 128, 128, 1)">221</span>         <span style="color: rgba(0, 0, 255, 1)">void</span> page_ShowSourceChanged(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> currentSource)
</span><span style="color: rgba(0, 128, 128, 1)">222</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">223</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.DataSource =<span style="color: rgba(0, 0, 0, 1)"> currentSource;
</span><span style="color: rgba(0, 128, 128, 1)">224</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">225</span>
<span style="color: rgba(0, 128, 128, 1)">226</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 事件
<span style="color: rgba(0, 128, 128, 1)">227</span>         
</span><span style="color: rgba(0, 128, 128, 1)">228</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> EventHandler HeadCheckBoxChangeEvent;
</span><span style="color: rgba(0, 128, 128, 1)">229</span>         
</span><span style="color: rgba(0, 128, 128, 1)">230</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> EventHandler HeadColumnClickEvent;
</span><span style="color: rgba(0, 128, 128, 1)">231</span>         
</span><span style="color: rgba(0, 128, 128, 1)">232</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler ItemClick;
</span><span style="color: rgba(0, 128, 128, 1)">233</span>         
</span><span style="color: rgba(0, 128, 128, 1)">234</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler SourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)">235</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">236</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span></pre>
</div>
<p>一些私有的方法</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span>   <span style="color: rgba(0, 0, 255, 1)">#region</span> 私有方法
<span style="color: rgba(0, 128, 128, 1)"> 2</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 加载column
<span style="color: rgba(0, 128, 128, 1)"> 3</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 功能描述:加载column
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 作  者:HZH
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 创建日期:2019-08-08 17:51:50
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 任务编号:POS
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> LoadColumns()
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">11</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">13</span>               <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (DesignMode)
</span><span style="color: rgba(0, 128, 128, 1)">14</span>               { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">15</span>
<span style="color: rgba(0, 128, 128, 1)">16</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panHead, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">17</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panColumns.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">18</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panColumns.ColumnStyles.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">19</span>
<span style="color: rgba(0, 128, 128, 1)">20</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_columns != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; m_columns.Count() &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">22</span>                     <span style="color: rgba(0, 0, 255, 1)">int</span> intColumnsCount =<span style="color: rgba(0, 0, 0, 1)"> m_columns.Count();
</span><span style="color: rgba(0, 128, 128, 1)">23</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">25</span>                         intColumnsCount++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">27</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnCount =<span style="color: rgba(0, 0, 0, 1)"> intColumnsCount;
</span><span style="color: rgba(0, 128, 128, 1)">28</span>                     <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; intColumnsCount; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">30</span>                         Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">31</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (i == <span style="color: rgba(128, 0, 128, 1)">0</span> &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">33</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F));
</span><span style="color: rgba(0, 128, 128, 1)">34</span>
<span style="color: rgba(0, 128, 128, 1)">35</span>                           UCCheckBox box = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> UCCheckBox();
</span><span style="color: rgba(0, 128, 128, 1)">36</span>                           box.TextValue = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">37</span>                           box.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> Size(<span style="color: rgba(128, 0, 128, 1)">30</span>, <span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">38</span>                           box.CheckedChangeEvent += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">40</span>                                 Rows.ForEach(p =&gt; p.IsChecked =<span style="color: rgba(0, 0, 0, 1)"> box.Checked);
</span><span style="color: rgba(0, 128, 128, 1)">41</span>                                 <span style="color: rgba(0, 0, 255, 1)">if</span> (HeadCheckBoxChangeEvent != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 0, 1)">                              {
</span><span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)">                                    HeadCheckBoxChangeEvent(a, b);
</span><span style="color: rgba(0, 128, 128, 1)">44</span> <span style="color: rgba(0, 0, 0, 1)">                              }
</span><span style="color: rgba(0, 128, 128, 1)">45</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)">46</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> box;
</span><span style="color: rgba(0, 128, 128, 1)">47</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">48</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">50</span>                           <span style="color: rgba(0, 0, 255, 1)">var</span> item = m_columns;
</span><span style="color: rgba(0, 128, 128, 1)">51</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(item.WidthType, item.Width));
</span><span style="color: rgba(0, 128, 128, 1)">52</span>                           Label lbl = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Label();
</span><span style="color: rgba(0, 128, 128, 1)">53</span>                           lbl.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dgvColumns_</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> i;
</span><span style="color: rgba(0, 128, 128, 1)">54</span>                           lbl.Text =<span style="color: rgba(0, 0, 0, 1)"> item.HeadText;
</span><span style="color: rgba(0, 128, 128, 1)">55</span>                           lbl.Font =<span style="color: rgba(0, 0, 0, 1)"> m_headFont;
</span><span style="color: rgba(0, 128, 128, 1)">56</span>                           lbl.ForeColor =<span style="color: rgba(0, 0, 0, 1)"> m_headTextColor;
</span><span style="color: rgba(0, 128, 128, 1)">57</span>                           lbl.TextAlign =<span style="color: rgba(0, 0, 0, 1)"> ContentAlignment.MiddleCenter;
</span><span style="color: rgba(0, 128, 128, 1)">58</span>                           lbl.AutoSize = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">59</span>                           lbl.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">60</span>                           lbl.MouseDown += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)">61</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">62</span>                                 <span style="color: rgba(0, 0, 255, 1)">if</span> (HeadColumnClickEvent != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">63</span> <span style="color: rgba(0, 0, 0, 1)">                              {
</span><span style="color: rgba(0, 128, 128, 1)">64</span> <span style="color: rgba(0, 0, 0, 1)">                                    HeadColumnClickEvent(a, b);
</span><span style="color: rgba(0, 128, 128, 1)">65</span> <span style="color: rgba(0, 0, 0, 1)">                              }
</span><span style="color: rgba(0, 128, 128, 1)">66</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)">67</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> lbl;
</span><span style="color: rgba(0, 128, 128, 1)">68</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">69</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.Controls.Add(c, i, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">70</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">71</span>
<span style="color: rgba(0, 128, 128, 1)">72</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">73</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">74</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">75</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">76</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panHead, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">77</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">78</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">79</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">80</span>
<span style="color: rgba(0, 128, 128, 1)">81</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">82</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 功能描述:获取显示个数
</span><span style="color: rgba(0, 128, 128, 1)">83</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 作  者:HZH
</span><span style="color: rgba(0, 128, 128, 1)">84</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 创建日期:2019-03-05 10:02:58
</span><span style="color: rgba(0, 128, 128, 1)">85</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 任务编号:POS
</span><span style="color: rgba(0, 128, 128, 1)">86</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">87</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;returns&gt;</span><span style="color: rgba(0, 128, 0, 1)">返回值</span><span style="color: rgba(128, 128, 128, 1)">&lt;/returns&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">88</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ResetShowCount()
</span><span style="color: rgba(0, 128, 128, 1)">89</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">90</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (DesignMode)
</span><span style="color: rgba(0, 128, 128, 1)">91</span>             { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">92</span>             ShowCount = <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height /<span style="color: rgba(0, 0, 0, 1)"> (m_rowHeight);
</span><span style="color: rgba(0, 128, 128, 1)">93</span>             <span style="color: rgba(0, 0, 255, 1)">int</span> intCha = <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height %<span style="color: rgba(0, 0, 0, 1)"> (m_rowHeight);
</span><span style="color: rgba(0, 128, 128, 1)">94</span>             m_rowHeight += intCha /<span style="color: rgba(0, 0, 0, 1)"> ShowCount;
</span><span style="color: rgba(0, 128, 128, 1)">95</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">96</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span></pre>
</div>
<p>几个事件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span><span style="color: rgba(0, 0, 255, 1)">#region</span> 事件
<span style="color: rgba(0, 128, 128, 1)"> 2</span>         <span style="color: rgba(0, 0, 255, 1)">void</span> RowSourceChanged(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, DataGridViewEventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (SourceChanged != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">                SourceChanged(sender, e);
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> SetSelectRow(Control item, DataGridViewEventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">11</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">12</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (item == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">13</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">14</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (item.Visible == <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">15</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">16</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.FindForm().ActiveControl = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">17</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.FindForm().ActiveControl =<span style="color: rgba(0, 0, 0, 1)"> item;
</span><span style="color: rgba(0, 128, 128, 1)">18</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_selectRow != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">20</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (m_selectRow ==<span style="color: rgba(0, 0, 0, 1)"> item)
</span><span style="color: rgba(0, 128, 128, 1)">21</span>                         <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">22</span>                     m_selectRow.SetSelect(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">24</span>               m_selectRow = item <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow;
</span><span style="color: rgba(0, 128, 128, 1)">25</span>               m_selectRow.SetSelect(<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">26</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (ItemClick != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)">                  ItemClick(item, e);
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">30</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Controls.Count &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">32</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (item.Location.Y &lt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">34</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScrollPosition = <span style="color: rgba(0, 0, 255, 1)">new</span> Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, Math.Abs(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Controls[<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Controls.Count - <span style="color: rgba(128, 0, 128, 1)">1</span>].Location.Y) +<span style="color: rgba(0, 0, 0, 1)"> item.Location.Y);
</span><span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">36</span>                     <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (item.Location.Y + m_rowHeight &gt; <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Height)
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">38</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScrollPosition = <span style="color: rgba(0, 0, 255, 1)">new</span> Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, Math.Abs(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScrollPosition.Y) + item.Location.Y - <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height +<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight);
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">42</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">44</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">45</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">46</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">47</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span> UCDataGridView_Resize(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, EventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)">48</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)">            ResetShowCount();
</span><span style="color: rgba(0, 128, 128, 1)">50</span> <span style="color: rgba(0, 0, 0, 1)">            ReloadSource();
</span><span style="color: rgba(0, 128, 128, 1)">51</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">52</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span></pre>
</div>
<p>对外公开的函数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span><span style="color: rgba(0, 0, 255, 1)">#region</span> 公共函数
<span style="color: rgba(0, 128, 128, 1)">2</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">3</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 刷新数据
</span><span style="color: rgba(0, 128, 128, 1)">4</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">5</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ReloadSource()
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">7</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (DesignMode)
</span><span style="color: rgba(0, 128, 128, 1)">8</span>             { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">9</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)"> 10</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_columns == <span style="color: rgba(0, 0, 255, 1)">null</span> || m_columns.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span>
<span style="color: rgba(0, 128, 128, 1)"> 14</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span>               Rows = <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;IDataGridViewRow&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span>                     <span style="color: rgba(0, 0, 255, 1)">int</span> intIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span>                     Control lastItem = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span>
<span style="color: rgba(0, 128, 128, 1)"> 22</span>                     <span style="color: rgba(0, 0, 255, 1)">int</span> intSourceCount = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> DataTable)
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span>                         intSourceCount = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> DataTable).Rows.Count;
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span>                     <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(IList).IsAssignableFrom(m_dataSource.GetType()))
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span>                         intSourceCount = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IList).Count;
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>
<span style="color: rgba(0, 128, 128, 1)"> 32</span>                     <span style="color: rgba(0, 0, 255, 1)">foreach</span> (Control item <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Controls)
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span>
<span style="color: rgba(0, 128, 128, 1)"> 35</span>
<span style="color: rgba(0, 128, 128, 1)"> 36</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (intIndex &gt;=<span style="color: rgba(0, 0, 0, 1)"> intSourceCount)
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span>                           item.Visible = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span>                           <span style="color: rgba(0, 0, 255, 1)">var</span> row = (item <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow);
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span>                           row.IsShowCheckBox =<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> DataTable)
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> DataTable).Rows;
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span>                           <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IList);
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span> <span style="color: rgba(0, 0, 0, 1)">                            row.BindingCellData();
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span>                           item.Height =<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight;
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span>                           item.Visible = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)">                            item.BringToFront();
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (lastItem == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span>                                 lastItem =<span style="color: rgba(0, 0, 0, 1)"> item;
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)">                            Rows.Add(row);
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span>                         intIndex++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span>
<span style="color: rgba(0, 128, 128, 1)"> 63</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (intIndex &lt;<span style="color: rgba(0, 0, 0, 1)"> intSourceCount)
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span>                         <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = intIndex; i &lt; intSourceCount; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span>                           IDataGridViewRow row =<span style="color: rgba(0, 0, 0, 1)"> (IDataGridViewRow)Activator.CreateInstance(m_rowType);
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> DataTable)
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> DataTable).Rows;
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span>                           <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IList);
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span>                           row.Columns =<span style="color: rgba(0, 0, 0, 1)"> m_columns;
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span>                           List&lt;Control&gt; lstCells = <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;Control&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>                           row.IsShowCheckBox =<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox;
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span> <span style="color: rgba(0, 0, 0, 1)">                            row.ReloadCells();
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span> <span style="color: rgba(0, 0, 0, 1)">                            row.BindingCellData();
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span>
<span style="color: rgba(0, 128, 128, 1)"> 82</span>
<span style="color: rgba(0, 128, 128, 1)"> 83</span>                           Control rowControl = (row <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span>                           rowControl.Height =<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight;
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Controls.Add(rowControl);
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span>                           rowControl.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Top;
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>                           row.CellClick += (a, b) =&gt;<span style="color: rgba(0, 0, 0, 1)"> { SetSelectRow(rowControl, b); };
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span>                           row.CheckBoxChangeEvent += (a, b) =&gt;<span style="color: rgba(0, 0, 0, 1)"> { SetSelectRow(rowControl, b); };
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span>                           row.SourceChanged +=<span style="color: rgba(0, 0, 0, 1)"> RowSourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 0, 1)">                            rowControl.BringToFront();
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span> <span style="color: rgba(0, 0, 0, 1)">                            Rows.Add(row);
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span>
<span style="color: rgba(0, 128, 128, 1)"> 93</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (lastItem == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span>                                 lastItem =<span style="color: rgba(0, 0, 0, 1)"> rowControl;
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (lastItem != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; intSourceCount ==<span style="color: rgba(0, 0, 0, 1)"> m_showCount)
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>                         lastItem.Height = <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height - (m_showCount - <span style="color: rgba(128, 0, 128, 1)">1</span>) *<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight;
</span><span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">102</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">103</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">104</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">105</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">106</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">107</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">108</span>
<span style="color: rgba(0, 128, 128, 1)">109</span>
<span style="color: rgba(0, 128, 128, 1)">110</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">111</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 快捷键
</span><span style="color: rgba(0, 128, 128, 1)">112</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">113</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="msg"&gt;&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">114</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="keyData"&gt;&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">115</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;returns&gt;&lt;/returns&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">116</span>         <span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">override</span> <span style="color: rgba(0, 0, 255, 1)">bool</span> ProcessCmdKey(<span style="color: rgba(0, 0, 255, 1)">ref</span><span style="color: rgba(0, 0, 0, 1)"> Message msg, Keys keyData)
</span><span style="color: rgba(0, 128, 128, 1)">117</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">118</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.Up)
</span><span style="color: rgba(0, 128, 128, 1)">119</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">120</span> <span style="color: rgba(0, 0, 0, 1)">                Previous();
</span><span style="color: rgba(0, 128, 128, 1)">121</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">122</span>             <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.Down)
</span><span style="color: rgba(0, 128, 128, 1)">123</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">124</span> <span style="color: rgba(0, 0, 0, 1)">                Next();
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">126</span>             <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.Home)
</span><span style="color: rgba(0, 128, 128, 1)">127</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">128</span> <span style="color: rgba(0, 0, 0, 1)">                First();
</span><span style="color: rgba(0, 128, 128, 1)">129</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">130</span>             <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.End)
</span><span style="color: rgba(0, 128, 128, 1)">131</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">132</span> <span style="color: rgba(0, 0, 0, 1)">                End();
</span><span style="color: rgba(0, 128, 128, 1)">133</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">134</span>             <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">base</span>.ProcessCmdKey(<span style="color: rgba(0, 0, 255, 1)">ref</span><span style="color: rgba(0, 0, 0, 1)"> msg, keyData);
</span><span style="color: rgba(0, 128, 128, 1)">135</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">136</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">137</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中第一个
</span><span style="color: rgba(0, 128, 128, 1)">138</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">139</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> First()
</span><span style="color: rgba(0, 128, 128, 1)">140</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">141</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">142</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">143</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">144</span>             c = (Rows[<span style="color: rgba(128, 0, 128, 1)">0</span>] <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">145</span>             SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">146</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">147</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">148</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中上一个
</span><span style="color: rgba(0, 128, 128, 1)">149</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">150</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> Previous()
</span><span style="color: rgba(0, 128, 128, 1)">151</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">152</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">153</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">154</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">155</span>
<span style="color: rgba(0, 128, 128, 1)">156</span>             <span style="color: rgba(0, 0, 255, 1)">int</span> index =<span style="color: rgba(0, 0, 0, 1)"> Rows.IndexOf(m_selectRow);
</span><span style="color: rgba(0, 128, 128, 1)">157</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (index - <span style="color: rgba(128, 0, 128, 1)">1</span> &gt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">159</span>               c = (Rows <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">160</span>               SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = index - <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">161</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">162</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">163</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">164</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中下一个
</span><span style="color: rgba(0, 128, 128, 1)">165</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">166</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> Next()
</span><span style="color: rgba(0, 128, 128, 1)">167</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">168</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">169</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">170</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">171</span>
<span style="color: rgba(0, 128, 128, 1)">172</span>             <span style="color: rgba(0, 0, 255, 1)">int</span> index =<span style="color: rgba(0, 0, 0, 1)"> Rows.IndexOf(m_selectRow);
</span><span style="color: rgba(0, 128, 128, 1)">173</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (index + <span style="color: rgba(128, 0, 128, 1)">1</span> &lt;<span style="color: rgba(0, 0, 0, 1)"> Rows.Count)
</span><span style="color: rgba(0, 128, 128, 1)">174</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">175</span>               c = (Rows <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">176</span>               SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = index + <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">177</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">178</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">179</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">180</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中最后一个
</span><span style="color: rgba(0, 128, 128, 1)">181</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">182</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> End()
</span><span style="color: rgba(0, 128, 128, 1)">183</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">184</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">185</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">186</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">187</span>             c = (Rows <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">188</span>             SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = Rows.Count - <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">189</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">190</span>
<span style="color: rgba(0, 128, 128, 1)">191</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span></pre>
</div>
<p>完整代码</p>
<div class="cnblogs_code"><img alt="" id="code_img_closed_078db357-14a2-4424-91f4-263aac7db5ab" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img alt="" id="code_img_opened_078db357-14a2-4424-91f4-263aac7db5ab" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_078db357-14a2-4424-91f4-263aac7db5ab" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 版权所有黄正辉交流群:568015492   QQ:623128629
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 文件名称:UCDataGridView.cs
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建日期:2019-08-15 15:59:25
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 功能描述:DataGridView
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 项目地址:</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://gitee.com/kwwwvagaa/net_winform_custom_control</span>
<span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System;
</span><span style="color: rgba(0, 128, 128, 1)">7</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Collections.Generic;
</span><span style="color: rgba(0, 128, 128, 1)">8</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.ComponentModel;
</span><span style="color: rgba(0, 128, 128, 1)">9</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Drawing;
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Data;
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Linq;
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Text;
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms;
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span> <span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> System.Collections;
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span>
<span style="color: rgba(0, 128, 128, 1)"> 16</span> <span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> HZH_Controls.Controls
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span>   <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">partial</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> UCDataGridView : UserControl
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 属性
<span style="color: rgba(0, 128, 128, 1)"> 21</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> Font m_headFont = <span style="color: rgba(0, 0, 255, 1)">new</span> Font(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">微软雅黑</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, 12F);
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 23</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 标题字体
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 25</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Font HeadFont
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_headFont; }
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span>             <span style="color: rgba(0, 0, 255, 1)">set</span> { m_headFont =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> Color m_headTextColor =<span style="color: rgba(0, 0, 0, 1)"> Color.Black;
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 33</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 标题字体颜色
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 35</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Color HeadTextColor
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_headTextColor; }
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span>             <span style="color: rgba(0, 0, 255, 1)">set</span> { m_headTextColor =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span>
<span style="color: rgba(0, 128, 128, 1)"> 42</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">bool</span> m_isShowHead = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 44</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 是否显示标题
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 46</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsShowHead
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_isShowHead; }
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>               m_isShowHead =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span>               panHead.Visible =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_page != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span> <span style="color: rgba(0, 0, 0, 1)">                  ResetShowCount();
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span>                     m_page.PageSize =<span style="color: rgba(0, 0, 0, 1)"> m_showCount;
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">int</span> m_headHeight = <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 63</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 标题高度
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 65</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> HeadHeight
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_headHeight; }
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 70</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span>               m_headHeight =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span>               panHead.Height =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span>
<span style="color: rgba(0, 128, 128, 1)"> 76</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">bool</span> m_isShowCheckBox = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 78</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 是否显示复选框
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 80</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> IsShowCheckBox
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox; }
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)"> 85</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value !=<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span>                     m_isShowCheckBox =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span> <span style="color: rgba(0, 0, 0, 1)">                  LoadColumns();
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span>
<span style="color: rgba(0, 128, 128, 1)"> 94</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">int</span> m_rowHeight = <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 96</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 行高
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 98</span>         
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> RowHeight
</span><span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">101</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_rowHeight; }
</span><span style="color: rgba(0, 128, 128, 1)">102</span>             <span style="color: rgba(0, 0, 255, 1)">set</span> { m_rowHeight =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">104</span>
<span style="color: rgba(0, 128, 128, 1)">105</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">int</span> m_showCount = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">106</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">107</span>         <span style="color: rgba(128, 128, 128, 1)">///</span>
<span style="color: rgba(0, 128, 128, 1)">108</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">109</span>         
</span><span style="color: rgba(0, 128, 128, 1)">110</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> ShowCount
</span><span style="color: rgba(0, 128, 128, 1)">111</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">112</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_showCount; }
</span><span style="color: rgba(0, 128, 128, 1)">113</span>             <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">114</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">115</span>               m_showCount =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">116</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_page != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">117</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">118</span>                     m_page.PageSize =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">119</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">120</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">121</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">122</span>
<span style="color: rgba(0, 128, 128, 1)">123</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)"> m_columns;
</span><span style="color: rgba(0, 128, 128, 1)">124</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">125</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 列
</span><span style="color: rgba(0, 128, 128, 1)">126</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">127</span>         
</span><span style="color: rgba(0, 128, 128, 1)">128</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)"> Columns
</span><span style="color: rgba(0, 128, 128, 1)">129</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">130</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_columns; }
</span><span style="color: rgba(0, 128, 128, 1)">131</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">132</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">133</span>               m_columns =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(0, 0, 0, 1)">                LoadColumns();
</span><span style="color: rgba(0, 128, 128, 1)">135</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">136</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">137</span>
<span style="color: rgba(0, 128, 128, 1)">138</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> m_dataSource;
</span><span style="color: rgba(0, 128, 128, 1)">139</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">140</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 数据源,支持列表或table,如果使用翻页控件,请使用翻页控件的DataSource
</span><span style="color: rgba(0, 128, 128, 1)">141</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">142</span>         
</span><span style="color: rgba(0, 128, 128, 1)">143</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> DataSource
</span><span style="color: rgba(0, 128, 128, 1)">144</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">145</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_dataSource; }
</span><span style="color: rgba(0, 128, 128, 1)">146</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">147</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">148</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">149</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">150</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (!(m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span> DataTable) &amp;&amp; (!<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(IList).IsAssignableFrom(value.GetType())))
</span><span style="color: rgba(0, 128, 128, 1)">151</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">152</span>                     <span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">数据源不是有效的数据类型,请使用Datatable或列表</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">153</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">154</span>
<span style="color: rgba(0, 128, 128, 1)">155</span>               m_dataSource =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">156</span> <span style="color: rgba(0, 0, 0, 1)">                ReloadSource();
</span><span style="color: rgba(0, 128, 128, 1)">157</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">159</span>
<span style="color: rgba(0, 128, 128, 1)">160</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;IDataGridViewRow&gt; Rows { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">161</span>
<span style="color: rgba(0, 128, 128, 1)">162</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> Type m_rowType = <span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(UCDataGridViewRow);
</span><span style="color: rgba(0, 128, 128, 1)">163</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">164</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 行元素类型,默认UCDataGridViewItem
</span><span style="color: rgba(0, 128, 128, 1)">165</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">166</span>         
</span><span style="color: rgba(0, 128, 128, 1)">167</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> Type RowType
</span><span style="color: rgba(0, 128, 128, 1)">168</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">169</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_rowType; }
</span><span style="color: rgba(0, 128, 128, 1)">170</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">171</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">172</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">173</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">174</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">typeof</span>(IDataGridViewRow).IsAssignableFrom(value) || !value.IsSubclassOf(<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(Control)))
</span><span style="color: rgba(0, 128, 128, 1)">175</span>                     <span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">行控件没有实现IDataGridViewRow接口</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">176</span>               m_rowType =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">177</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">178</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">179</span>         IDataGridViewRow m_selectRow = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">180</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">181</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中的节点
</span><span style="color: rgba(0, 128, 128, 1)">182</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">183</span>         
</span><span style="color: rgba(0, 128, 128, 1)">184</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow SelectRow
</span><span style="color: rgba(0, 128, 128, 1)">185</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">186</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_selectRow; }
</span><span style="color: rgba(0, 128, 128, 1)">187</span>             <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">set</span> { m_selectRow =<span style="color: rgba(0, 0, 0, 1)"> value; }
</span><span style="color: rgba(0, 128, 128, 1)">188</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">189</span>
<span style="color: rgba(0, 128, 128, 1)">190</span>
<span style="color: rgba(0, 128, 128, 1)">191</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">192</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中的行,如果显示CheckBox,则以CheckBox选中为准
</span><span style="color: rgba(0, 128, 128, 1)">193</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">194</span>         
</span><span style="color: rgba(0, 128, 128, 1)">195</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;IDataGridViewRow&gt;<span style="color: rgba(0, 0, 0, 1)"> SelectRows
</span><span style="color: rgba(0, 128, 128, 1)">196</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">197</span>             <span style="color: rgba(0, 0, 255, 1)">get</span>
<span style="color: rgba(0, 128, 128, 1)">198</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">199</span>               <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">200</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">201</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span> Rows.FindAll(p =&gt;<span style="color: rgba(0, 0, 0, 1)"> p.IsChecked);
</span><span style="color: rgba(0, 128, 128, 1)">202</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">203</span>               <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">204</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;IDataGridViewRow&gt;<span style="color: rgba(0, 0, 0, 1)">() { m_selectRow };
</span><span style="color: rgba(0, 128, 128, 1)">205</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">206</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">207</span>
<span style="color: rgba(0, 128, 128, 1)">208</span>
<span style="color: rgba(0, 128, 128, 1)">209</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> UCPagerControlBase m_page = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">210</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">211</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 翻页控件
</span><span style="color: rgba(0, 128, 128, 1)">212</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">213</span>         
</span><span style="color: rgba(0, 128, 128, 1)">214</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> UCPagerControlBase Page
</span><span style="color: rgba(0, 128, 128, 1)">215</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">216</span>             <span style="color: rgba(0, 0, 255, 1)">get</span> { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> m_page; }
</span><span style="color: rgba(0, 128, 128, 1)">217</span>             <span style="color: rgba(0, 0, 255, 1)">set</span>
<span style="color: rgba(0, 128, 128, 1)">218</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">219</span>               m_page =<span style="color: rgba(0, 0, 0, 1)"> value;
</span><span style="color: rgba(0, 128, 128, 1)">220</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (value != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">221</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">222</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">typeof</span>(IPageControl).IsAssignableFrom(value.GetType()) || !value.GetType().IsSubclassOf(<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(UCPagerControlBase)))
</span><span style="color: rgba(0, 128, 128, 1)">223</span>                         <span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">翻页控件没有继承UCPagerControlBase</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">224</span>                     panPage.Visible = value != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">225</span>                     m_page.ShowSourceChanged +=<span style="color: rgba(0, 0, 0, 1)"> page_ShowSourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)">226</span>                     m_page.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">227</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panPage.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">228</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panPage.Controls.Add(m_page);
</span><span style="color: rgba(0, 128, 128, 1)">229</span> <span style="color: rgba(0, 0, 0, 1)">                  ResetShowCount();
</span><span style="color: rgba(0, 128, 128, 1)">230</span>                     m_page.PageSize =<span style="color: rgba(0, 0, 0, 1)"> ShowCount;
</span><span style="color: rgba(0, 128, 128, 1)">231</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span>.DataSource =<span style="color: rgba(0, 0, 0, 1)"> m_page.GetCurrentSource();
</span><span style="color: rgba(0, 128, 128, 1)">232</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">233</span>               <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">234</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">235</span>                     m_page = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">236</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">237</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">238</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">239</span>
<span style="color: rgba(0, 128, 128, 1)">240</span>         <span style="color: rgba(0, 0, 255, 1)">void</span> page_ShowSourceChanged(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> currentSource)
</span><span style="color: rgba(0, 128, 128, 1)">241</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">242</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.DataSource =<span style="color: rgba(0, 0, 0, 1)"> currentSource;
</span><span style="color: rgba(0, 128, 128, 1)">243</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">244</span>
<span style="color: rgba(0, 128, 128, 1)">245</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 事件
<span style="color: rgba(0, 128, 128, 1)">246</span>         
</span><span style="color: rgba(0, 128, 128, 1)">247</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> EventHandler HeadCheckBoxChangeEvent;
</span><span style="color: rgba(0, 128, 128, 1)">248</span>         
</span><span style="color: rgba(0, 128, 128, 1)">249</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> EventHandler HeadColumnClickEvent;
</span><span style="color: rgba(0, 128, 128, 1)">250</span>         
</span><span style="color: rgba(0, 128, 128, 1)">251</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler ItemClick;
</span><span style="color: rgba(0, 128, 128, 1)">252</span>         
</span><span style="color: rgba(0, 128, 128, 1)">253</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)"> DataGridViewEventHandler SourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)">254</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">255</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">256</span>
<span style="color: rgba(0, 128, 128, 1)">257</span>         <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> UCDataGridView()
</span><span style="color: rgba(0, 128, 128, 1)">258</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">259</span> <span style="color: rgba(0, 0, 0, 1)">            InitializeComponent();
</span><span style="color: rgba(0, 128, 128, 1)">260</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">261</span>
<span style="color: rgba(0, 128, 128, 1)">262</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 私有方法
<span style="color: rgba(0, 128, 128, 1)">263</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 加载column
<span style="color: rgba(0, 128, 128, 1)">264</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">265</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 功能描述:加载column
</span><span style="color: rgba(0, 128, 128, 1)">266</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 作  者:HZH
</span><span style="color: rgba(0, 128, 128, 1)">267</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 创建日期:2019-08-08 17:51:50
</span><span style="color: rgba(0, 128, 128, 1)">268</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 任务编号:POS
</span><span style="color: rgba(0, 128, 128, 1)">269</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">270</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> LoadColumns()
</span><span style="color: rgba(0, 128, 128, 1)">271</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">272</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)">273</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">274</span>               <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (DesignMode)
</span><span style="color: rgba(0, 128, 128, 1)">275</span>               { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">276</span>
<span style="color: rgba(0, 128, 128, 1)">277</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panHead, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">278</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panColumns.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">279</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panColumns.ColumnStyles.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">280</span>
<span style="color: rgba(0, 128, 128, 1)">281</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_columns != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; m_columns.Count() &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">282</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">283</span>                     <span style="color: rgba(0, 0, 255, 1)">int</span> intColumnsCount =<span style="color: rgba(0, 0, 0, 1)"> m_columns.Count();
</span><span style="color: rgba(0, 128, 128, 1)">284</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">285</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">286</span>                         intColumnsCount++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">287</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">288</span>                     <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnCount =<span style="color: rgba(0, 0, 0, 1)"> intColumnsCount;
</span><span style="color: rgba(0, 128, 128, 1)">289</span>                     <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; intColumnsCount; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">290</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">291</span>                         Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">292</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (i == <span style="color: rgba(128, 0, 128, 1)">0</span> &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox)
</span><span style="color: rgba(0, 128, 128, 1)">293</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">294</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F));
</span><span style="color: rgba(0, 128, 128, 1)">295</span>
<span style="color: rgba(0, 128, 128, 1)">296</span>                           UCCheckBox box = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> UCCheckBox();
</span><span style="color: rgba(0, 128, 128, 1)">297</span>                           box.TextValue = <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">298</span>                           box.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> Size(<span style="color: rgba(128, 0, 128, 1)">30</span>, <span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">299</span>                           box.CheckedChangeEvent += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)">300</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">301</span>                                 Rows.ForEach(p =&gt; p.IsChecked =<span style="color: rgba(0, 0, 0, 1)"> box.Checked);
</span><span style="color: rgba(0, 128, 128, 1)">302</span>                                 <span style="color: rgba(0, 0, 255, 1)">if</span> (HeadCheckBoxChangeEvent != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">303</span> <span style="color: rgba(0, 0, 0, 1)">                              {
</span><span style="color: rgba(0, 128, 128, 1)">304</span> <span style="color: rgba(0, 0, 0, 1)">                                    HeadCheckBoxChangeEvent(a, b);
</span><span style="color: rgba(0, 128, 128, 1)">305</span> <span style="color: rgba(0, 0, 0, 1)">                              }
</span><span style="color: rgba(0, 128, 128, 1)">306</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)">307</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> box;
</span><span style="color: rgba(0, 128, 128, 1)">308</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">309</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">310</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">311</span>                           <span style="color: rgba(0, 0, 255, 1)">var</span> item = m_columns;
</span><span style="color: rgba(0, 128, 128, 1)">312</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(item.WidthType, item.Width));
</span><span style="color: rgba(0, 128, 128, 1)">313</span>                           Label lbl = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Label();
</span><span style="color: rgba(0, 128, 128, 1)">314</span>                           lbl.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dgvColumns_</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> i;
</span><span style="color: rgba(0, 128, 128, 1)">315</span>                           lbl.Text =<span style="color: rgba(0, 0, 0, 1)"> item.HeadText;
</span><span style="color: rgba(0, 128, 128, 1)">316</span>                           lbl.Font =<span style="color: rgba(0, 0, 0, 1)"> m_headFont;
</span><span style="color: rgba(0, 128, 128, 1)">317</span>                           lbl.ForeColor =<span style="color: rgba(0, 0, 0, 1)"> m_headTextColor;
</span><span style="color: rgba(0, 128, 128, 1)">318</span>                           lbl.TextAlign =<span style="color: rgba(0, 0, 0, 1)"> ContentAlignment.MiddleCenter;
</span><span style="color: rgba(0, 128, 128, 1)">319</span>                           lbl.AutoSize = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">320</span>                           lbl.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)">321</span>                           lbl.MouseDown += (a, b) =&gt;
<span style="color: rgba(0, 128, 128, 1)">322</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">323</span>                                 <span style="color: rgba(0, 0, 255, 1)">if</span> (HeadColumnClickEvent != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">324</span> <span style="color: rgba(0, 0, 0, 1)">                              {
</span><span style="color: rgba(0, 128, 128, 1)">325</span> <span style="color: rgba(0, 0, 0, 1)">                                    HeadColumnClickEvent(a, b);
</span><span style="color: rgba(0, 128, 128, 1)">326</span> <span style="color: rgba(0, 0, 0, 1)">                              }
</span><span style="color: rgba(0, 128, 128, 1)">327</span> <span style="color: rgba(0, 0, 0, 1)">                            };
</span><span style="color: rgba(0, 128, 128, 1)">328</span>                           c =<span style="color: rgba(0, 0, 0, 1)"> lbl;
</span><span style="color: rgba(0, 128, 128, 1)">329</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">330</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.Controls.Add(c, i, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">331</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">332</span>
<span style="color: rgba(0, 128, 128, 1)">333</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">334</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">335</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">336</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">337</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panHead, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">338</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">339</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">340</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">341</span>
<span style="color: rgba(0, 128, 128, 1)">342</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">343</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 功能描述:获取显示个数
</span><span style="color: rgba(0, 128, 128, 1)">344</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 作  者:HZH
</span><span style="color: rgba(0, 128, 128, 1)">345</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 创建日期:2019-03-05 10:02:58
</span><span style="color: rgba(0, 128, 128, 1)">346</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 任务编号:POS
</span><span style="color: rgba(0, 128, 128, 1)">347</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">348</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;returns&gt;</span><span style="color: rgba(0, 128, 0, 1)">返回值</span><span style="color: rgba(128, 128, 128, 1)">&lt;/returns&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">349</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ResetShowCount()
</span><span style="color: rgba(0, 128, 128, 1)">350</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">351</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (DesignMode)
</span><span style="color: rgba(0, 128, 128, 1)">352</span>             { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">353</span>             ShowCount = <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height /<span style="color: rgba(0, 0, 0, 1)"> (m_rowHeight);
</span><span style="color: rgba(0, 128, 128, 1)">354</span>             <span style="color: rgba(0, 0, 255, 1)">int</span> intCha = <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height %<span style="color: rgba(0, 0, 0, 1)"> (m_rowHeight);
</span><span style="color: rgba(0, 128, 128, 1)">355</span>             m_rowHeight += intCha /<span style="color: rgba(0, 0, 0, 1)"> ShowCount;
</span><span style="color: rgba(0, 128, 128, 1)">356</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">357</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">358</span>
<span style="color: rgba(0, 128, 128, 1)">359</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 公共函数
<span style="color: rgba(0, 128, 128, 1)">360</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">361</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 刷新数据
</span><span style="color: rgba(0, 128, 128, 1)">362</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">363</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> ReloadSource()
</span><span style="color: rgba(0, 128, 128, 1)">364</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">365</span>             <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (DesignMode)
</span><span style="color: rgba(0, 128, 128, 1)">366</span>             { <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">; }
</span><span style="color: rgba(0, 128, 128, 1)">367</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)">368</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">369</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_columns == <span style="color: rgba(0, 0, 255, 1)">null</span> || m_columns.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">370</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">371</span>
<span style="color: rgba(0, 128, 128, 1)">372</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">373</span>               <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Controls.Clear();
</span><span style="color: rgba(0, 128, 128, 1)">374</span>               Rows = <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;IDataGridViewRow&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)">375</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">376</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">377</span>                     <span style="color: rgba(0, 0, 255, 1)">int</span> intIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">378</span>                     Control lastItem = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">379</span>
<span style="color: rgba(0, 128, 128, 1)">380</span>                     <span style="color: rgba(0, 0, 255, 1)">int</span> intSourceCount = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">381</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> DataTable)
</span><span style="color: rgba(0, 128, 128, 1)">382</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">383</span>                         intSourceCount = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> DataTable).Rows.Count;
</span><span style="color: rgba(0, 128, 128, 1)">384</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">385</span>                     <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)">(IList).IsAssignableFrom(m_dataSource.GetType()))
</span><span style="color: rgba(0, 128, 128, 1)">386</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">387</span>                         intSourceCount = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IList).Count;
</span><span style="color: rgba(0, 128, 128, 1)">388</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">389</span>
<span style="color: rgba(0, 128, 128, 1)">390</span>                     <span style="color: rgba(0, 0, 255, 1)">foreach</span> (Control item <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Controls)
</span><span style="color: rgba(0, 128, 128, 1)">391</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">392</span>
<span style="color: rgba(0, 128, 128, 1)">393</span>
<span style="color: rgba(0, 128, 128, 1)">394</span>                         <span style="color: rgba(0, 0, 255, 1)">if</span> (intIndex &gt;=<span style="color: rgba(0, 0, 0, 1)"> intSourceCount)
</span><span style="color: rgba(0, 128, 128, 1)">395</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">396</span>                           item.Visible = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">397</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">398</span>                         <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">399</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">400</span>                           <span style="color: rgba(0, 0, 255, 1)">var</span> row = (item <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow);
</span><span style="color: rgba(0, 128, 128, 1)">401</span>                           row.IsShowCheckBox =<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox;
</span><span style="color: rgba(0, 128, 128, 1)">402</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> DataTable)
</span><span style="color: rgba(0, 128, 128, 1)">403</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">404</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> DataTable).Rows;
</span><span style="color: rgba(0, 128, 128, 1)">405</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)">406</span>                           <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">407</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">408</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IList);
</span><span style="color: rgba(0, 128, 128, 1)">409</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)">410</span> <span style="color: rgba(0, 0, 0, 1)">                            row.BindingCellData();
</span><span style="color: rgba(0, 128, 128, 1)">411</span>                           item.Height =<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight;
</span><span style="color: rgba(0, 128, 128, 1)">412</span>                           item.Visible = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">413</span> <span style="color: rgba(0, 0, 0, 1)">                            item.BringToFront();
</span><span style="color: rgba(0, 128, 128, 1)">414</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (lastItem == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">415</span>                                 lastItem =<span style="color: rgba(0, 0, 0, 1)"> item;
</span><span style="color: rgba(0, 128, 128, 1)">416</span> <span style="color: rgba(0, 0, 0, 1)">                            Rows.Add(row);
</span><span style="color: rgba(0, 128, 128, 1)">417</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">418</span>                         intIndex++<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">419</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">420</span>
<span style="color: rgba(0, 128, 128, 1)">421</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (intIndex &lt;<span style="color: rgba(0, 0, 0, 1)"> intSourceCount)
</span><span style="color: rgba(0, 128, 128, 1)">422</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">423</span>                         <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = intIndex; i &lt; intSourceCount; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">424</span> <span style="color: rgba(0, 0, 0, 1)">                        {
</span><span style="color: rgba(0, 128, 128, 1)">425</span>                           IDataGridViewRow row =<span style="color: rgba(0, 0, 0, 1)"> (IDataGridViewRow)Activator.CreateInstance(m_rowType);
</span><span style="color: rgba(0, 128, 128, 1)">426</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (m_dataSource <span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> DataTable)
</span><span style="color: rgba(0, 128, 128, 1)">427</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">428</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> DataTable).Rows;
</span><span style="color: rgba(0, 128, 128, 1)">429</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)">430</span>                           <span style="color: rgba(0, 0, 255, 1)">else</span>
<span style="color: rgba(0, 128, 128, 1)">431</span> <span style="color: rgba(0, 0, 0, 1)">                            {
</span><span style="color: rgba(0, 128, 128, 1)">432</span>                                 row.DataSource = (m_dataSource <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IList);
</span><span style="color: rgba(0, 128, 128, 1)">433</span> <span style="color: rgba(0, 0, 0, 1)">                            }
</span><span style="color: rgba(0, 128, 128, 1)">434</span>                           row.Columns =<span style="color: rgba(0, 0, 0, 1)"> m_columns;
</span><span style="color: rgba(0, 128, 128, 1)">435</span>                           List&lt;Control&gt; lstCells = <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;Control&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)">436</span>                           row.IsShowCheckBox =<span style="color: rgba(0, 0, 0, 1)"> m_isShowCheckBox;
</span><span style="color: rgba(0, 128, 128, 1)">437</span> <span style="color: rgba(0, 0, 0, 1)">                            row.ReloadCells();
</span><span style="color: rgba(0, 128, 128, 1)">438</span> <span style="color: rgba(0, 0, 0, 1)">                            row.BindingCellData();
</span><span style="color: rgba(0, 128, 128, 1)">439</span>
<span style="color: rgba(0, 128, 128, 1)">440</span>
<span style="color: rgba(0, 128, 128, 1)">441</span>                           Control rowControl = (row <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">442</span>                           rowControl.Height =<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight;
</span><span style="color: rgba(0, 128, 128, 1)">443</span>                           <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Controls.Add(rowControl);
</span><span style="color: rgba(0, 128, 128, 1)">444</span>                           rowControl.Dock =<span style="color: rgba(0, 0, 0, 1)"> DockStyle.Top;
</span><span style="color: rgba(0, 128, 128, 1)">445</span>                           row.CellClick += (a, b) =&gt;<span style="color: rgba(0, 0, 0, 1)"> { SetSelectRow(rowControl, b); };
</span><span style="color: rgba(0, 128, 128, 1)">446</span>                           row.CheckBoxChangeEvent += (a, b) =&gt;<span style="color: rgba(0, 0, 0, 1)"> { SetSelectRow(rowControl, b); };
</span><span style="color: rgba(0, 128, 128, 1)">447</span>                           row.SourceChanged +=<span style="color: rgba(0, 0, 0, 1)"> RowSourceChanged;
</span><span style="color: rgba(0, 128, 128, 1)">448</span> <span style="color: rgba(0, 0, 0, 1)">                            rowControl.BringToFront();
</span><span style="color: rgba(0, 128, 128, 1)">449</span> <span style="color: rgba(0, 0, 0, 1)">                            Rows.Add(row);
</span><span style="color: rgba(0, 128, 128, 1)">450</span>
<span style="color: rgba(0, 128, 128, 1)">451</span>                           <span style="color: rgba(0, 0, 255, 1)">if</span> (lastItem == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">452</span>                                 lastItem =<span style="color: rgba(0, 0, 0, 1)"> rowControl;
</span><span style="color: rgba(0, 128, 128, 1)">453</span> <span style="color: rgba(0, 0, 0, 1)">                        }
</span><span style="color: rgba(0, 128, 128, 1)">454</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">455</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (lastItem != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; intSourceCount ==<span style="color: rgba(0, 0, 0, 1)"> m_showCount)
</span><span style="color: rgba(0, 128, 128, 1)">456</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">457</span>                         lastItem.Height = <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height - (m_showCount - <span style="color: rgba(128, 0, 128, 1)">1</span>) *<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight;
</span><span style="color: rgba(0, 128, 128, 1)">458</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">459</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">460</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">461</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">462</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">463</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">464</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">465</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">466</span>
<span style="color: rgba(0, 128, 128, 1)">467</span>
<span style="color: rgba(0, 128, 128, 1)">468</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">469</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 快捷键
</span><span style="color: rgba(0, 128, 128, 1)">470</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">471</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="msg"&gt;&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">472</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="keyData"&gt;&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">473</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;returns&gt;&lt;/returns&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">474</span>         <span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">override</span> <span style="color: rgba(0, 0, 255, 1)">bool</span> ProcessCmdKey(<span style="color: rgba(0, 0, 255, 1)">ref</span><span style="color: rgba(0, 0, 0, 1)"> Message msg, Keys keyData)
</span><span style="color: rgba(0, 128, 128, 1)">475</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">476</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.Up)
</span><span style="color: rgba(0, 128, 128, 1)">477</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">478</span> <span style="color: rgba(0, 0, 0, 1)">                Previous();
</span><span style="color: rgba(0, 128, 128, 1)">479</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">480</span>             <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.Down)
</span><span style="color: rgba(0, 128, 128, 1)">481</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">482</span> <span style="color: rgba(0, 0, 0, 1)">                Next();
</span><span style="color: rgba(0, 128, 128, 1)">483</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">484</span>             <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.Home)
</span><span style="color: rgba(0, 128, 128, 1)">485</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">486</span> <span style="color: rgba(0, 0, 0, 1)">                First();
</span><span style="color: rgba(0, 128, 128, 1)">487</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">488</span>             <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (keyData ==<span style="color: rgba(0, 0, 0, 1)"> Keys.End)
</span><span style="color: rgba(0, 128, 128, 1)">489</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">490</span> <span style="color: rgba(0, 0, 0, 1)">                End();
</span><span style="color: rgba(0, 128, 128, 1)">491</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">492</span>             <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">base</span>.ProcessCmdKey(<span style="color: rgba(0, 0, 255, 1)">ref</span><span style="color: rgba(0, 0, 0, 1)"> msg, keyData);
</span><span style="color: rgba(0, 128, 128, 1)">493</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">494</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">495</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中第一个
</span><span style="color: rgba(0, 128, 128, 1)">496</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">497</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> First()
</span><span style="color: rgba(0, 128, 128, 1)">498</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">499</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">500</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">501</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">502</span>             c = (Rows[<span style="color: rgba(128, 0, 128, 1)">0</span>] <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">503</span>             SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">504</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">505</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">506</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中上一个
</span><span style="color: rgba(0, 128, 128, 1)">507</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">508</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> Previous()
</span><span style="color: rgba(0, 128, 128, 1)">509</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">510</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">511</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">512</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">513</span>
<span style="color: rgba(0, 128, 128, 1)">514</span>             <span style="color: rgba(0, 0, 255, 1)">int</span> index =<span style="color: rgba(0, 0, 0, 1)"> Rows.IndexOf(m_selectRow);
</span><span style="color: rgba(0, 128, 128, 1)">515</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (index - <span style="color: rgba(128, 0, 128, 1)">1</span> &gt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">516</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">517</span>               c = (Rows <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">518</span>               SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = index - <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">519</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">520</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">521</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">522</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中下一个
</span><span style="color: rgba(0, 128, 128, 1)">523</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">524</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> Next()
</span><span style="color: rgba(0, 128, 128, 1)">525</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">526</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">527</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">528</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">529</span>
<span style="color: rgba(0, 128, 128, 1)">530</span>             <span style="color: rgba(0, 0, 255, 1)">int</span> index =<span style="color: rgba(0, 0, 0, 1)"> Rows.IndexOf(m_selectRow);
</span><span style="color: rgba(0, 128, 128, 1)">531</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (index + <span style="color: rgba(128, 0, 128, 1)">1</span> &lt;<span style="color: rgba(0, 0, 0, 1)"> Rows.Count)
</span><span style="color: rgba(0, 128, 128, 1)">532</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">533</span>               c = (Rows <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">534</span>               SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = index + <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">535</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">536</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">537</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">538</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 选中最后一个
</span><span style="color: rgba(0, 128, 128, 1)">539</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">540</span>         <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> End()
</span><span style="color: rgba(0, 128, 128, 1)">541</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">542</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (Rows == <span style="color: rgba(0, 0, 255, 1)">null</span> || Rows.Count &lt;= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">543</span>               <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">544</span>             Control c = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">545</span>             c = (Rows <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> Control);
</span><span style="color: rgba(0, 128, 128, 1)">546</span>             SetSelectRow(c, <span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewEventArgs() { RowIndex = Rows.Count - <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">547</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">548</span>
<span style="color: rgba(0, 128, 128, 1)">549</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">550</span>
<span style="color: rgba(0, 128, 128, 1)">551</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 事件
<span style="color: rgba(0, 128, 128, 1)">552</span>         <span style="color: rgba(0, 0, 255, 1)">void</span> RowSourceChanged(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, DataGridViewEventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)">553</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">554</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (SourceChanged != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">555</span> <span style="color: rgba(0, 0, 0, 1)">                SourceChanged(sender, e);
</span><span style="color: rgba(0, 128, 128, 1)">556</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">557</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> SetSelectRow(Control item, DataGridViewEventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)">558</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">559</span>             <span style="color: rgba(0, 0, 255, 1)">try</span>
<span style="color: rgba(0, 128, 128, 1)">560</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">561</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">562</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (item == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">563</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">564</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (item.Visible == <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">565</span>                     <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">566</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.FindForm().ActiveControl = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">567</span>               <span style="color: rgba(0, 0, 255, 1)">this</span>.FindForm().ActiveControl =<span style="color: rgba(0, 0, 0, 1)"> item;
</span><span style="color: rgba(0, 128, 128, 1)">568</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (m_selectRow != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">569</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">570</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (m_selectRow ==<span style="color: rgba(0, 0, 0, 1)"> item)
</span><span style="color: rgba(0, 128, 128, 1)">571</span>                         <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">572</span>                     m_selectRow.SetSelect(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">573</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">574</span>               m_selectRow = item <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> IDataGridViewRow;
</span><span style="color: rgba(0, 128, 128, 1)">575</span>               m_selectRow.SetSelect(<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">576</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (ItemClick != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">577</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">578</span> <span style="color: rgba(0, 0, 0, 1)">                  ItemClick(item, e);
</span><span style="color: rgba(0, 128, 128, 1)">579</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">580</span>               <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Controls.Count &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">581</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">582</span>                     <span style="color: rgba(0, 0, 255, 1)">if</span> (item.Location.Y &lt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">583</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">584</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScrollPosition = <span style="color: rgba(0, 0, 255, 1)">new</span> Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, Math.Abs(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Controls[<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Controls.Count - <span style="color: rgba(128, 0, 128, 1)">1</span>].Location.Y) +<span style="color: rgba(0, 0, 0, 1)"> item.Location.Y);
</span><span style="color: rgba(0, 128, 128, 1)">585</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">586</span>                     <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (item.Location.Y + m_rowHeight &gt; <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow.Height)
</span><span style="color: rgba(0, 128, 128, 1)">587</span> <span style="color: rgba(0, 0, 0, 1)">                  {
</span><span style="color: rgba(0, 128, 128, 1)">588</span>                         <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScrollPosition = <span style="color: rgba(0, 0, 255, 1)">new</span> Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, Math.Abs(<span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScrollPosition.Y) + item.Location.Y - <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Height +<span style="color: rgba(0, 0, 0, 1)"> m_rowHeight);
</span><span style="color: rgba(0, 128, 128, 1)">589</span> <span style="color: rgba(0, 0, 0, 1)">                  }
</span><span style="color: rgba(0, 128, 128, 1)">590</span> <span style="color: rgba(0, 0, 0, 1)">                }
</span><span style="color: rgba(0, 128, 128, 1)">591</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">592</span>             <span style="color: rgba(0, 0, 255, 1)">finally</span>
<span style="color: rgba(0, 128, 128, 1)">593</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">594</span>               ControlHelper.FreezeControl(<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">595</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">596</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">597</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span> UCDataGridView_Resize(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, EventArgs e)
</span><span style="color: rgba(0, 128, 128, 1)">598</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)">599</span> <span style="color: rgba(0, 0, 0, 1)">            ResetShowCount();
</span><span style="color: rgba(0, 128, 128, 1)">600</span> <span style="color: rgba(0, 0, 0, 1)">            ReloadSource();
</span><span style="color: rgba(0, 128, 128, 1)">601</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">602</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">603</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">604</span> }</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<div class="cnblogs_code"><img alt="" id="code_img_closed_d3069a05-b1c0-4b18-a100-150ad698f759" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img alt="" id="code_img_opened_d3069a05-b1c0-4b18-a100-150ad698f759" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_d3069a05-b1c0-4b18-a100-150ad698f759" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)"> HZH_Controls.Controls
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">3</span>   <span style="color: rgba(0, 0, 255, 1)">partial</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> UCDataGridView
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 0, 1)">    {
</span><span style="color: rgba(0, 128, 128, 1)">5</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">6</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 必需的设计器变量。
</span><span style="color: rgba(0, 128, 128, 1)">7</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">8</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> System.ComponentModel.IContainer components = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">9</span>
<span style="color: rgba(0, 128, 128, 1)"> 10</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 11</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 清理所有正在使用的资源。
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 13</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;param name="disposing"&gt;</span><span style="color: rgba(0, 128, 0, 1)">如果应释放托管资源,为 true;否则为 false。</span><span style="color: rgba(128, 128, 128, 1)">&lt;/param&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 14</span>         <span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">override</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Dispose(<span style="color: rgba(0, 0, 255, 1)">bool</span><span style="color: rgba(0, 0, 0, 1)"> disposing)
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span>             <span style="color: rgba(0, 0, 255, 1)">if</span> (disposing &amp;&amp; (components != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(0, 0, 0, 1)">                components.Dispose();
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span>             <span style="color: rgba(0, 0, 255, 1)">base</span><span style="color: rgba(0, 0, 0, 1)">.Dispose(disposing);
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span>
<span style="color: rgba(0, 128, 128, 1)"> 23</span>         <span style="color: rgba(0, 0, 255, 1)">#region</span> 组件设计器生成的代码
<span style="color: rgba(0, 128, 128, 1)"> 24</span>
<span style="color: rgba(0, 128, 128, 1)"> 25</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 26</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 设计器支持所需的方法 - 不要
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span>         <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 使用代码编辑器修改此方法的内容。
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span>         <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 29</span>         <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> InitializeComponent()
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(0, 0, 0, 1)">      {
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.Panel();
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.TableLayoutPanel();
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1 = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> HZH_Controls.Controls.UCSplitLine_H();
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.Panel();
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.Panel();
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span>             <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panHead.SuspendLayout();
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span>             <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.SuspendLayout();
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 39</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> panHead
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 41</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panColumns);
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.ucSplitLine_H1);
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Top;
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panHead</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">1061</span>, <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.TabIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 49</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> panColumns
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 51</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnCount = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.ColumnStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panColumns</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.RowCount = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.RowStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.RowStyles.Add(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">1061</span>, <span style="color: rgba(128, 0, 128, 1)">39</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panColumns.TabIndex = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 62</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> ucSplitLine_H1
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 64</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((<span style="color: rgba(0, 0, 255, 1)">int</span>)(((<span style="color: rgba(0, 0, 255, 1)">byte</span>)(<span style="color: rgba(128, 0, 128, 1)">232</span>)))), ((<span style="color: rgba(0, 0, 255, 1)">int</span>)(((<span style="color: rgba(0, 0, 255, 1)">byte</span>)(<span style="color: rgba(128, 0, 128, 1)">232</span>)))), ((<span style="color: rgba(0, 0, 255, 1)">int</span>)(((<span style="color: rgba(0, 0, 255, 1)">byte</span>)(<span style="color: rgba(128, 0, 128, 1)">232</span><span style="color: rgba(0, 0, 0, 1)">)))));
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Bottom;
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">39</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ucSplitLine_H1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">1061</span>, <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.TabIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucSplitLine_H1.TabStop = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 72</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> panRow
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 74</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.AutoScroll = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Fill;
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panRow</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">1061</span>, <span style="color: rgba(128, 0, 128, 1)">475</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panRow.TabIndex = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 81</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> panPage
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 83</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage.Dock =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.DockStyle.Bottom;
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage.Location = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Point(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">515</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panPage</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">1061</span>, <span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage.TabIndex = <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panPage.Visible = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 90</span>             <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> UCDataGridView
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span>             <span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 128, 128, 1)"> 92</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.AutoScaleMode =<span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.AutoScaleMode.None;
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.BackColor =<span style="color: rgba(0, 0, 0, 1)"> System.Drawing.Color.White;
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panRow);
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panPage);
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Controls.Add(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.panHead);
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">UCDataGridView</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Size = <span style="color: rgba(0, 0, 255, 1)">new</span> System.Drawing.Size(<span style="color: rgba(128, 0, 128, 1)">1061</span>, <span style="color: rgba(128, 0, 128, 1)">565</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.Resize += <span style="color: rgba(0, 0, 255, 1)">new</span> System.EventHandler(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.UCDataGridView_Resize);
</span><span style="color: rgba(0, 128, 128, 1)">100</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.panHead.ResumeLayout(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">101</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ResumeLayout(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">102</span>
<span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">104</span>
<span style="color: rgba(0, 128, 128, 1)">105</span>         <span style="color: rgba(0, 0, 255, 1)">#endregion</span>
<span style="color: rgba(0, 128, 128, 1)">106</span>
<span style="color: rgba(0, 128, 128, 1)">107</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.Panel panHead;
</span><span style="color: rgba(0, 128, 128, 1)">108</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.TableLayoutPanel panColumns;
</span><span style="color: rgba(0, 128, 128, 1)">109</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> UCSplitLine_H ucSplitLine_H1;
</span><span style="color: rgba(0, 128, 128, 1)">110</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.Panel panRow;
</span><span style="color: rgba(0, 128, 128, 1)">111</span>         <span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> System.Windows.Forms.Panel panPage;
</span><span style="color: rgba(0, 128, 128, 1)">112</span>
<span style="color: rgba(0, 128, 128, 1)">113</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">114</span> }</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>如果你仔细看,你会发现行我用了类型进行传入,当你需要更丰富的行内容的时候,可以自定义行控件,然后通过RowType属性传入</p>
<p>分页控件我使用了分页控件基类UCPagerControlBase,这样做的好处就是你同样可以扩展分页控件</p>
<h1>用处及效果</h1>
<p><img alt="" data-src="https://img2018.cnblogs.com/blog/396919/201908/396919-20190816162518967-1649903757.png"></p>
<p>调用示例</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span>List&lt;DataGridViewColumnEntity&gt; lstCulumns = <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;DataGridViewColumnEntity&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>             lstCulumns.Add(<span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewColumnEntity() { DataField = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ID</span><span style="color: rgba(128, 0, 0, 1)">"</span>, HeadText = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">编号</span><span style="color: rgba(128, 0, 0, 1)">"</span>, Width = <span style="color: rgba(128, 0, 128, 1)">70</span>, WidthType =<span style="color: rgba(0, 0, 0, 1)"> SizeType.Absolute });
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>             lstCulumns.Add(<span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewColumnEntity() { DataField = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Name</span><span style="color: rgba(128, 0, 0, 1)">"</span>, HeadText = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">姓名</span><span style="color: rgba(128, 0, 0, 1)">"</span>, Width = <span style="color: rgba(128, 0, 128, 1)">50</span>, WidthType =<span style="color: rgba(0, 0, 0, 1)"> SizeType.Percent });
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>             lstCulumns.Add(<span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewColumnEntity() { DataField = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, HeadText = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">年龄</span><span style="color: rgba(128, 0, 0, 1)">"</span>, Width = <span style="color: rgba(128, 0, 128, 1)">50</span>, WidthType =<span style="color: rgba(0, 0, 0, 1)"> SizeType.Percent });
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>             lstCulumns.Add(<span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewColumnEntity() { DataField = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Birthday</span><span style="color: rgba(128, 0, 0, 1)">"</span>, HeadText = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">生日</span><span style="color: rgba(128, 0, 0, 1)">"</span>, Width = <span style="color: rgba(128, 0, 128, 1)">50</span>, WidthType = SizeType.Percent, Format = (a) =&gt; { <span style="color: rgba(0, 0, 255, 1)">return</span> ((DateTime)a).ToString(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">yyyy-MM-dd</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">); } });
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>             lstCulumns.Add(<span style="color: rgba(0, 0, 255, 1)">new</span> DataGridViewColumnEntity() { DataField = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Sex</span><span style="color: rgba(128, 0, 0, 1)">"</span>, HeadText = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">性别</span><span style="color: rgba(128, 0, 0, 1)">"</span>, Width = <span style="color: rgba(128, 0, 128, 1)">50</span>, WidthType = SizeType.Percent, Format = (a) =&gt; { <span style="color: rgba(0, 0, 255, 1)">return</span> ((<span style="color: rgba(0, 0, 255, 1)">int</span>)a) == <span style="color: rgba(128, 0, 128, 1)">0</span> ? <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">女</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">男</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">; } });
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucDataGridView1.Columns =<span style="color: rgba(0, 0, 0, 1)"> lstCulumns;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucDataGridView1.IsShowCheckBox = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>             List&lt;<span style="color: rgba(0, 0, 255, 1)">object</span>&gt; lstSource = <span style="color: rgba(0, 0, 255, 1)">new</span> List&lt;<span style="color: rgba(0, 0, 255, 1)">object</span>&gt;<span style="color: rgba(0, 0, 0, 1)">();
</span><span style="color: rgba(0, 128, 128, 1)">10</span>             <span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; <span style="color: rgba(128, 0, 128, 1)">200</span>; i++<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">            {
</span><span style="color: rgba(0, 128, 128, 1)">12</span>               TestModel model = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> TestModel()
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">                {
</span><span style="color: rgba(0, 128, 128, 1)">14</span>                     ID =<span style="color: rgba(0, 0, 0, 1)"> i.ToString(),
</span><span style="color: rgba(0, 128, 128, 1)">15</span>                     Age = <span style="color: rgba(128, 0, 128, 1)">3</span> *<span style="color: rgba(0, 0, 0, 1)"> i,
</span><span style="color: rgba(0, 128, 128, 1)">16</span>                     Name = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">姓名——</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> i,
</span><span style="color: rgba(0, 128, 128, 1)">17</span>                     Birthday = DateTime.Now.AddYears(-<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 128, 128, 1)">18</span>                     Sex = i % <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">                };
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)">                lstSource.Add(model);
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">22</span>
<span style="color: rgba(0, 128, 128, 1)">23</span>             <span style="color: rgba(0, 0, 255, 1)">var</span> page = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> UCPagerControl2();
</span><span style="color: rgba(0, 128, 128, 1)">24</span>             page.DataSource =<span style="color: rgba(0, 0, 0, 1)"> lstSource;
</span><span style="color: rgba(0, 128, 128, 1)">25</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucDataGridView1.Page =<span style="color: rgba(0, 0, 0, 1)"> page;
</span><span style="color: rgba(0, 128, 128, 1)">26</span>             <span style="color: rgba(0, 0, 255, 1)">this</span>.ucDataGridView1.First();</pre>
</div>
<p>如果使用分页控件,则将数据源指定给分页控件,否则直接指定给表格控件数据源</p>
<h1>最后的话</h1>
<p>如果你喜欢的话,请到&nbsp;https://gitee.com/kwwwvagaa/net_winform_custom_control&nbsp;点个星 星吧</p>

</div>
<div id="MySignature" role="contentinfo">
    <div style="display: block" id="MySignature"><p style="background: rgb(230, 250, 230); padding: 10px 10px 10px 10px; border: 1px dashed rgb(224, 224, 224); font-family: 微软雅黑; font-size: 13px; text-indent: 0em">
作者:冰封一夏
<br>
出处:http://www.cnblogs.com/bfyx/
<br>
HZHControls官网:http://www.hzhcontrols.cn
<br>
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
<br>且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
<br>
GitHub:https://github.com/kwwwvagaa/NetWinformControl
<br>
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
</p>
</div><br><br>
来源:https://www.cnblogs.com/bfyx/p/11364737.html
頁: [1]
查看完整版本: (三十二)c#Winform自定义控件-表格-HZHControls