簡體   English   中英

如何從字符串C#WPF動態調用文本框?

[英]How to call a textbox dynamically from a string C# WPF?

因此,我有70個“節點”,它們都是WPF中的所有文本框,並且我試圖通過函數調用更改文本框中的值。

我有一個函數叫做:

private void changeNode(int row, int column, int cost)  
{    
       int nodeNumber= row * 10 + column;     
       call node"nodeNumber".Text = Convert.String(cost); 
       //example node0.Text = Convert.String(cost); 
}

我確定要更改的節點,然后調用nodeX.Text進行更改,但是我希望X成為變量,而不必創建70種情況來調用適當的文本框。

我看到了幾種通過反射進行此操作的方法,但是,它似乎僅在該函數沒有參數並且也位於函數中而不是XAML中的文本框的情況下起作用。

讓我知道是否有一種簡單的方法可以將字符串“ node37”轉換為調用node37.Text = cost或類似的東西。

聽起來您的方法是錯誤的。 為什么會有一組代表文本框名稱的字符串? 相反,您應該在內存中引用TextBox對象。 如果您有多個,並且不知道會有多少個,請改用TextBox對象array 您可以使用代表要與之交互的文本框的數字索引到數組中。

避免使用反射,這里完全沒有必要。

我假設您已經為所有文本框輸入了名稱(如果沒有,則可以動態地執行此操作)。 然后,您可以使用此問題的答案按名稱查找適當的控件。

您的所有文本框是否都屬於同一畫布或其他控件? 遍歷子級並將控件添加到字典中。 解析名稱以獲取數字並將其用作鍵。

處理數據時,最好使用List。 使用要加載的DataObject創建一個ObservableCollection,現在處理Data對象而不是實際的控件。

在WPF中,如果遵循規則,則不應指向實際對象。 在此處檢查示例應用程序: http : //www.abhisheksur.com/2010/08/woring-with-icollectionviewsource-in.html

我認為您會采用這種方法。

暫無
暫無

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

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