我有按鈕,文本的更改,在一個點上,我需要他們的一組來改回原來的文本。重置按鈕文本到原始文本
我可以手動做,並設置每個button.text=originalText"
,但有沒有辦法做到這一點更快?
有沒有辦法從屬性中獲取原始文本並循環更改文本? (它們全都具有相同的標籤)
我有按鈕,文本的更改,在一個點上,我需要他們的一組來改回原來的文本。重置按鈕文本到原始文本
我可以手動做,並設置每個button.text=originalText"
,但有沒有辦法做到這一點更快?
有沒有辦法從屬性中獲取原始文本並循環更改文本? (它們全都具有相同的標籤)
在撥打InitializeComponent
之後,您可以創建一個按鈕及其原始Text屬性的字典。
假設你有三個按鈕,命名爲Button1, Button2, Button3
Dim _originalTexts As Dictionary(Of Button, string)
Public Sub New()
InitializeComponents()
_originalTexts = new Dictionary(Of Button, string)() From _
{ _
{Button1, Button1.Text}, _
{Button2, Button2.Text}, _
{Button3, Button3.Text} _
}
End Sub
當你需要恢復原來的文本,你可以寫
for each pair as KeyValuePair(Of Button, string) in _originalTexts
pair.Key.Text = pair.Value
Next
當然,此方式可用字典還允許搜索特定的按鈕。
在這兒,你搜索按鈕,其標籤屬性設置爲某事的例子
Dim b = tt.Where(Function (x) x.Key.Tag.ToString = "b1").SingleOrDefault()
if b.Key IsNot Nothing Then
Console.WriteLine(b.Value)
End If
注:如果你沒有看到在你的窗體類InitializeComponent
調用,只需鍵入構造
Public Sub New()ENTER
IDE將爲您顯示缺少的代碼。
聲明一個實例變量每個按鈕的默認文本存儲
Private DefaultButtonTexts as Dictionary(Of string, string)
InitializeComponent()
後,名稱和每個按鈕的文本存儲到字典
'Sub Main
'dim form = new Form()
'form.Controls.Add(new TextBox() With { .Name = "txt1" })
'form.Controls.Add(new Button() With { .Name = "btn1", .Text = "Button 1" })
'form.Controls.Add(new Button() With { .Name = "btn2", .Text = "Button 2" })
'DefaultButtonTexts = form.Controls.Cast(Of Control)
DefaultButtonTexts = this.Controls.Cast(Of Control) _
.OfType(Of Button) _
.ToDictionary(Function(x) x.Name, Function(x) x.Text)
'DefaultButtonTexts.Dump()
'form.ShowDialog()
'End Sub
而且,剛剛從還原需要
Private Sub RestoreText(button as Button)
button.Text = DefaultButtonTexts(button.name)
End Sub
或當字典,恢復基於一些按鈕在Tag
屬性
this.Controls.Cast(Of Control) _
.OfType(Of Button) _
.Where(Function(x) x.Tag = "tag1") _
.ToList() _
.ForEach(Function(x) x.Text = DefaultButtonTexts(x.name))
WinForms或WPF? – Steve
@Steve Winforms – Dman
我不認爲任何原始財產都保存在任何地方,因此在您重新分配它們後基本上會丟失。例如,您應該將該字符串保存在'Button'的其他位置,例如,在它的'Tag'屬性中,以便您稍後可以遍歷按鈕並執行'button.Text = button.Tag'。 – Andrew