将按钮文本重置为原始文本

时间:2015-01-05 17:41:36

标签: vb.net winforms loops button

我有按钮,文本被更改,有一点我需要一组更改回原始文本。

我可以手动完成,并设置每个button.text=originalText",但无论如何要更快地执行此操作吗?

是否有从属性获取原始文本并循环更改文本? (它们都有相同的标签)

2 个答案:

答案 0 :(得分:3)

在调用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

当然,以这种方式提供词典也允许搜索特定按钮 这是一个搜索Tag属性设置为

的按钮的示例
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将为您显示丢失的代码。

答案 1 :(得分:0)

声明一个实例变量来存储每个按钮的默认文本

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))