<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ObjectListView 使用技巧

      ObjectListView 庫功能很強大,可以和List<> 對象綁定, 支持排序(排序將自動識別數值或文本), 支持Excel like的 filter 功能, 可以隱藏指定列.
      本文簡單記錄一下相關使用技巧。


      ====================================
      下載
      ====================================
      要使用 nuget 網站的 2.7.1 版本, 不要使用 myget 網站的2.9.4版, 后者有比較嚴重的功能問題, 在 FormatRow 和 FormatCell 事件中設置字體和背景顏色都不生效。
      https://www.nuget.org/packages/ObjectListView



      ====================================
      組件級常用屬性
      ====================================
      1. CheckBoxes 屬性, 為每行前面增加一個 CheckBox
      2. GridLines 屬性, 為ListView顯示 Grid 線條
      3. FullRowSelect 屬性, 設置是否整行選擇模式
      4. HeaderFormatStyle 屬性, 用于控制Header的格式, 屬性取值應該是一個新的組件, 可以增加一個 HeaderFormatStyle 組件
      5. HotItemStyle 屬性, HotItem 指的是鼠標 hover 的 cell, 設置方式和 HeaderFormatStyle 屬性類似.
      6. HeaderWordWrap 屬性, Header是否換行
      7. HideSelection 屬性, 當 ObjectListView 組件不是當前Focused 組件, 是否要自動隱藏所選擇的cell/row. 一般要設置為False, 即不隱藏, 但即時設置為False, 選中效果其實并不明顯
      8. ShowGroups 屬性, ObjectListView 有自動分組的功能, 對于我們絕大多數使用場景, 一般都是要顯示成 Grid 風格, 所以需要將 ShowGroups 設置為 False, 否則需要關閉每個 column 的 Groupable 屬性.
      9. ShowSortIndicator 水性, 是否在Header上顯示排序的小圖標
      10. UseFiltering 屬性, 是否啟用 Excel like 的filter 功能
      11. UseFilterIndicator 屬性, 是否要在Header上顯示過濾的小圖標
      12. UseHotItem 屬性, 是否要開啟自定義的 HotItemStyle 功能, 開啟后, 當前光標下的cell 會有 hot tracking 的效果.
      13. View 屬性, 設置 ObjectListView 整體顯示的樣式, 可選 Detail/List/LargeImage 風格
      14. SelectColumnsOnRightClickBeheavior 屬性, 右擊 header 是否隱藏某些列, 以及如何隱藏這些列

      15. UseCellFormatEvents 屬性控制是否啟用  FormatCell 事件, 但 FormatRow 事件不受該屬性控制, 在組件級別設置  UseCellFormatEvents 為 true, 記錄數多的情況下, 會影響組件的渲染,   改善的方式是,  可以在 FormatRow 事件中, 有選擇地為指定記錄行設置 e.UseCellFormatEvents 為 true.
      16. ShowImagesOnSubItems 屬性, 如果要在非行首位置顯示圖標, 需要設置該屬性為 true .


      ====================================
      column級常用屬性
      ====================================
      1.AspectName 屬性. 用來設置 dataObject 的綁定屬性
      2 UseFiltering 屬性,  設定column 是否啟用Excel like 的filter功能
      3.Sortable 屬性, 設定column是否啟用排序功能
      4.Readerer 屬性, 通常cell僅顯示文本或數字, 但通過設置該屬性, 也可以顯示圖片, 進度條和button等


      ====================================
      常用操作
      ====================================
      1 綁定并顯示List<Person> 對象

          var dataList=new List<Person>();
          dataList.add(new Person());
          objectListView1.SetObjects(dataList);


      2. 從ListView中刪除一行

         objectListView1.RemoveObject(dataList[0]);


         
      3. 重置過濾條件

         objectListView1.ResetColumnFiltering();


         
      4. 排序
         默認情況下, objectListView 已經提供非常好的排序功能, 文本欄位按照文本排序, 數值欄位按照數值大小排序. 自定義排序也很簡單.

         objectListView1.CustomSorter = delegate(OLVColumn col, SortOrder order)
         {
         }


         
      5. 自定義顯示樣式
         實現 FormatRow 和 FormatCell 事件即可.
         設置 UseCellFormatEvents 為 true,

       

       

              private void objectListView1_FormatCell(object sender, FormatCellEventArgs e)
              {
                  if (e.ColumnIndex == this.olvColumn_CurrState.Index)
                  {
                      if (e.Model != null)
                      {
                          var state = ((EqpReportModel)e.Model).CurrentState;
                          switch (state)
                          {
                              case "Run":
                                  {
                                      e.SubItem.BackColor = Color.Yellow;
                                      break;
                                  }
                              case "Idle":
                                  {
                                      e.SubItem.BackColor = Color.Green;
                                      break;
                                  }
                              case "Alarm":
                                  {
                                      e.SubItem.BackColor = Color.Red;
                                      break;
                                  }
                              default:
                                  {
                                      break;
                                  }
                          }
                      }
                  }
              }

       

      ====================================
      為每個數據行增加 delete 按鈕
      ====================================

      https://stackoverflow.com/questions/12629417/objectlistview-delete-a-row-by-clicking-on-a-designated-column-with-fixed-cont

      public FormMain()
      {
          InitializeComponent();
          _typedObjectListView = new TypedObjectListView<EqpReportModel>(this.objectListView1);
       
          // enable cell edit and always set cell text to "Delete"
          olvColumn_Delete.IsEditable = true;
          olvColumn_Delete.AspectGetter = delegate (object value) {
              return "Delete";
          };
          // always display image from index 0 as default image for deleteColumn
          olvColumn_Delete.ImageGetter = delegate (object rowObject){
              return 0;
          };
          // don't want to display any text next to the image you can use
          olvColumn_Delete.AspectToStringConverter = delegate {
              return String.Empty;
          };
          objectListView1.CellEditActivation = ObjectListView.CellEditActivateMode.SingleClick;
          objectListView1.SmallImageList = imageList1;
          objectListView1.ShowImagesOnSubItems = true;
          objectListView1.CellEditStarting += ObjectListView1OnCellEditStarting;
      }
      
      private void ObjectListView1OnCellEditStarting(object sender, CellEditEventArgs e)
      {
          // special cell edit handling for our delete-row
          if (e.Column == olvColumn_Delete)
          {
              e.Cancel = true;        // we don't want to edit anything
              objectListView1.RemoveObject(e.RowObject); // remove object
          }
      }

       




      ====================================
      ObjectListView 支持泛型List
      ====================================
      通過 objectListView 行得到綁定對象, 其類型都是 Object 類型, 需要做類型強轉才能得到真實的類型, 比如Person類型, 比較麻煩. 幸運的是 objectListView 組件包提供了 TypedObjectListView Wrapper 類, 有了它就不需要類型強轉了.
      TypedObjectListView 使用方法很簡單: 先將普通的 objectListView 對象包裝成一個 TypedObjectListView 對象, 之后但凡要使用 objectListView對象獲取綁定對象, 都使用 TypedObjectListView 對象即可.

      TypedObjectListView<Person> typedObjectListView1=new TypedObjectListView<Person>(this.objectListView1);

       




      posted @ 2021-05-16 16:43  harrychinese  閱讀(1999)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 青青草国产自产一区二区| 成人自拍短视频午夜福利| 91福利国产午夜亚洲精品| 国产高清视频在线播放www色| 若羌县| 国内精品久久毛片一区二区| 亚洲成亚洲成网中文字幕| 开心五月婷婷综合网站| 日韩高清亚洲日韩精品一区二区| 黑人异族巨大巨大巨粗| 亚洲av无码精品蜜桃| 99久久精品费精品国产一区二区 | 日韩中文字幕亚洲精品一| 高清美女视频一区二区三区| 熟妇人妻av中文字幕老熟妇| 国产精品99中文字幕| 久久日产一线二线三线| 菠萝菠萝蜜午夜视频在线播放观看| 全部免费毛片在线播放| 日韩av一区二区精品不卡| 啊轻点灬大JI巴太粗太长了在线| 日韩丝袜人妻中文字幕| 日韩AV高清在线看片| 在线看国产精品自拍内射| 一区一区三区产品乱码| 亚洲中文字幕无码中字| 欧美人妻一区二区三区| 亚洲成人资源在线观看| 亚洲精品国产suv一区88| 无码福利写真片视频在线播放| 国产国产午夜福利视频| 超碰人人超碰人人| 九九热在线视频观看最新| av在线播放国产一区| 国产无套精品一区二区| 国产亚洲精品岁国产精品| 国产精品无码av不卡| 99国产精品99久久久久久| 国产精品视频不卡一区二区| 熟妇激情一区二区三区| 人人综合亚洲无线码另类|