[英]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.