DevExpress GridControl圖片列,圖片綁定與編輯保存

来源:https://www.cnblogs.com/hlyt/archive/2022/08/12/16578975.html
-Advertisement-
Play Games

需求如下,在DEV框架項目中,需要在表格中增加一列顯示圖片,並且能編輯該列圖片,然後進行保存等操作,最終效果如下 這裡使用的是PictureEdit控制項來實現,打開DEV GridControl設計器,在ColumnEdit選擇PictureEdit: 綁定圖片代碼如下: DataTable dtO ...


需求如下,在DEV框架項目中,需要在表格中增加一列顯示圖片,並且能編輯該列圖片,然後進行保存等操作,最終效果如下

 

 

 

 

 

 這裡使用的是PictureEdit控制項來實現,打開DEV GridControl設計器,在ColumnEdit選擇PictureEdit:

 

 

 

 綁定圖片代碼如下:

DataTable dtOutline = new DataTable("OutLine");
dtOutline.Columns.Add("outline", typeof(string));
dtOutline.Columns.Add("outline_pic", typeof(Image));
dtOutline.Columns.Add("cutspeed_min", typeof(float));
dtOutline.Columns.Add("cutspeed_max", typeof(float));
dtOutline.Columns.Add("cnt", typeof(float));

dtOutline.Rows.Add("", Properties.Resources.outline1, 200, 250, 100);
dtOutline.Rows.Add("", Properties.Resources.outline2, 100, 120, 60);
dtOutline.Rows.Add("", Properties.Resources.outline3, 150, 180, 100);
dtOutline.Rows.Add("", Properties.Resources.outline4, 100, 120, 100);
dgcOutline.DataSource = dtOutline;

編輯時,只需要點擊滑鼠右鍵--調用即可選擇圖片,由於本項目保存是將表格裡的數據存入本地.ini文件,因此我的方法是獲取到PictureEdit里的圖片然後存到本地的一個文件夾中,然後再將文件的路徑存入.ini文件,下次打開界面時先讀取.ini文件下對應的圖片路徑,再綁定到控制項,之所以這麼做是因為貌似PictureEdit無法像WEB端圖片控制項一樣直接獲取綁定的圖片路徑(如果大家知道怎麼獲取也可以留言告知)。

//保存圖片到文件夾 
Bitmap outlinePic = null;
if (dt.Rows[i]["outline_pic"] != DBNull.Value)
outlinePic = (Bitmap)dt.Rows[i]["outline_pic"];
string picName = "";
if (outlinePic != null)
{
  picName = $@"{Application.StartupPath}\Database\Files\CraftRecipe\outlinepic.png";
  outlinePic.Save(picName);
}
//將圖片路徑存入ini以便讀取圖片並綁定 INI操作方法不再贅述自行實現
DesignSettings.INI.SetValue(sec, "outline_pic", outline_pic);

這裡有一點要註意,假如選擇的文件不是png格式,採用以上方式保存的圖片是無法正常打開的,可以限制PictureEdit文件選擇框的類型,在OpenFileDialogFilter輸入:圖片文件(*.png)|*.png即可,如圖:

 

 

 

讀取時不要使用Image.FromFile()的方式,該方法會使圖片文件被占用,當我們更換了圖片想要保存表格數據時,會報錯,這裡採用Image.FromStream()從流中綁定得以解決

public byte[] GetImageByte(String path)
{
    using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
        BinaryReader br = new BinaryReader(fs);
        byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //將流讀入到位元組數組中
        return imgBytesIn;
    }
}                
  
DataTable dtOutline = new DataTable("dtOutline");
dtOutline.Columns.Add("outline", typeof(string));
dtOutline.Columns.Add("outline_pic", typeof(Image));
dtOutline.Columns.Add("cutspeed_min", typeof(float));
dtOutline.Columns.Add("cutspeed_max", typeof(float));
dtOutline.Columns.Add("cnt", typeof(float));
string outline_pic = DesignSettings.INI.GetValue(sec, "outline_pic");
Image img = null;
if (!string.IsNullOrEmpty(outline_pic))
{
  if (File.Exists(outline_pic))
  {
    using (MemoryStream ms = new MemoryStream(GetImageByte(outline_pic)))
    {
      img = Image.FromStream(ms);
    }
  }
}
dtOutline.Rows.Add(outline, img, cutspeed_min, cutspeed_max, cnt);
dgcOutline.DataSource = dtOutline;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多小伙伴都喜歡小游戲源碼,想學一手Python做小游戲,問我做游戲難不難,要怎麼做,接下來我就介紹一下,如何用Python做游戲。 游戲演示 2048小游戲 表白彈窗 貪吃蛇 五子棋 俄羅斯方塊 超多小游戲,讓你一個爽個夠! 用PyGame做游戲非常簡單,我們今天第一篇文章,讓大家實現一個可以在地 ...
  • 我國目前並未出台專門針對網路爬蟲技術的法律規範,但在司法實踐中,相關判決已屢見不鮮,K 哥特設了“K哥爬蟲普法”專欄,本欄目通過對真實案例的分析,旨在提高廣大爬蟲工程師的法律意識,知曉如何合法合規利用爬蟲技術,警鐘長鳴,做一個守法、護法、有原則的技術人員。 案情介紹 深圳市快鴿互聯網科技有限公司 2 ...
  • 一、應用場景 大家在使用Mybatis進行開發的時候,經常會遇到一種情況:按照月份month將數據放在不同的表裡面,查詢數據的時候需要跟不同的月份month去查詢不同的表。 但是我們都知道,Mybatis是ORM持久層框架,即:實體關係映射,實體Object與資料庫表之間是存在一一對應的映射關係。比 ...
  • 背景 在 CI/CD 流程當中,測試是 CI 中很重要的部分。跟開發人員關係最大的就是單元測試,單元測試編寫完成之後,我們可以使用 IDE 或者 dot cover 等工具獲得單元測試對於業務代碼的覆蓋率。不過我們需要一個獨立的 CLI 工具,這樣我們才能夠在 Jenkins 的 CI 流程集成。 ...
  • 一:背景 上一篇我們聊到瞭如何去找 熱點函數,這一篇我們來看下當你的程式出現了 非托管記憶體泄漏 時如何去尋找可疑的代碼源頭,其實思路很簡單,就是在 HeapAlloc 或者 VirtualAlloc 時做 Hook 攔截,記錄它的調用棧以及分配的記憶體量, PerfView 會將這個 分配量 做成一個 ...
  • .NET 項目預設情況下 日誌是使用的 ILogger 介面,預設提供一下四種日誌記錄程式: 控制台 調試 EventSource EventLog 這四種記錄程式都是預設包含在 .NET 運行時庫中。關於這四種記錄程式的詳細介紹可以直接查看微軟的官方文檔 https://docs.microsof ...
  • 航天和軍工領域的數字化轉型和建設正在積極推進,在與航天二院、航天三院、航天六院、航天九院、無線電廠、兵工廠等單位交流的過程中,用戶更聚焦試驗和生產過程中的痛點,迫切需要解決軟體平臺統一監測和控制設備及軟體與設備協同的問題。 ...
  • 前兩天微軟偷偷更新了Visual Studio 2022 正式版版本 17.3 發佈,發佈摘要: MAUI 工作負荷 GA 生成 MAUI/Blazor CSS 熱重載支持 現在,你將能夠使用我們的新增功能在 Visual Studio 中使用每個更新試用一系列新功能。 選擇每個功能以瞭解有關特定功 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...