簡體   English   中英

如何在每次數據源更新時更改Datagridview按鈕單元的文本

[英]How to change text of a Datagridview Button Cell on every update of Datasource

我有一個ac#應用程序,它從TCP接收數據包,並且在解析該數據包時,我在datagridview中創建了一個按鈕列。 需要根據接收到的數據更改按鈕的文本,即,如果接收到“ 0”,則該行的按鈕文本必須為“ STOP”,如果接收到“ 1”,則該行的按鈕文本必須為“開始'。 總是有多個行。 Datagridview的數據源每10秒更新一次。

 if (port_dict[kvp.Key] == "0")
{
           PORT_BUTTON_DICT[kvp.Key].UseColumnTextForButtonValue = true;
           PORT_BUTTON_DICT[kvp.Key].Text = "START";
           this.Invoke(new Action(() =>datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly=false));
           this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].Value = PORT_BUTTON_DICT[kvp.Key]));
           this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly = true));
           this.Invoke(new Action(() => datagridPM.Rows[row_count].Cells[datagridPM.Columns.Count - 1].Value = PORT_BUTTON_DICT[kvp.Key].Text));

 }

 else
 {
           PORT_BUTTON_DICT[kvp.Key].UseColumnTextForButtonValue = true;
           PORT_BUTTON_DICT[kvp.Key].Text = "STOP";
           this.Invoke(new Action(() =>datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly=false));
           this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].Value = PORT_BUTTON_DICT[kvp.Key]));
           this.Invoke(new Action(() => datagridPM[datagridPM.Columns.Count - 1, row_count].ReadOnly = true));
           this.Invoke(new Action(() => datagridPM.Rows[row_count].Cells[datagridPM.Columns.Count - 1].Value = PORT_BUTTON_DICT[kvp.Key].Text));
 }

我所面臨的是,如果任何一個按鈕更改,所有按鈕的文本每次更改。 我只希望按鈕文本更改為更改了值的行,而不是每一行。

UseColumnTextForButtonValue屬性設置為true表示將Text屬性的值用作按鈕值。 如果將其設置為false,則每個單元格的值將顯示在按鈕上。

在您的代碼中將其設置為true。 因此,無論何時更改Text屬性值,所有行都會更新。

由於UseColumnTextForButtonValue的默認值為false, UseColumnTextForButtonValue從代碼中刪除以下行。

PORT_BUTTON_DICT[kvp.Key].UseColumnTextForButtonValue = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM