C#点击事件时更改文本

C#点击事件时更改文本,c#,mouseclick-event,C#,Mouseclick Event,我有一个字段,当前可以通过鼠标单击更改文本。此字段位于我的报告的多个页面上,但单击它只会更改该页面的文本。以下是我的代码: const string sShowDetail2 = "Show Cumulative"; const string sHideDetail2 = "Hide Cumulative"; ArrayList expandedValues2 = new ArrayList(); // This function returns a value indicat

我有一个字段,当前可以通过鼠标单击更改文本。此字段位于我的报告的多个页面上,但单击它只会更改该页面的文本。以下是我的代码:

 const string sShowDetail2 = "Show Cumulative";
 const string sHideDetail2 = "Hide Cumulative";
 ArrayList expandedValues2 = new ArrayList();


    // This function returns a value indicating whether a certain  
    // category's details should be expanded. 

    bool ShouldShowDetail2(int CategoryID)
    {
        return expandedValues2.Contains(CategoryID);

    }



    private void lbShowHide2_BeforePrint(object sender, PrintEventArgs e)
    {
        XRLabel label = (XRLabel)sender;

        if (ShouldShowDetail2((int)label.Tag))
        {
            label.Text = sHideDetail2;
        }
        else
        {
            label.Text = sShowDetail2;
        }
    }

    private void lbShowHide2_PreviewClick(object sender, PreviewMouseEventArgs e)
    {
        // Obtain the category's ID stored in the label's Tag property. 
        int index = (int)e.Brick.Value;

        // Determine whether the current category's details are shown. 
        bool showDetail2 = ShouldShowDetail2(index);

        // Toggle the visibility of the category's details. 
        if (showDetail2)
        {
            expandedValues2.Remove(index);
        }
        else
        {
            expandedValues2.Add(index);
        }

现在我有了另一个字段,我需要在单击时简单地切换该字段的所有实例(每个页面)。我不需要它来读取我单击的特定标签,因为它将同时更改所有标签。我的问题是,我不知道如何让他们都改变鼠标点击。如何修改上面的代码以更改标签的所有实例?

以下是一些您可以尝试的内容

private void ChangeXRLabels(Control control)
{
    foreach(Control childControl in control.Controls)
    {
         XRLabel label = childControl as XRLabel;
         if(label != string.Empty)
            label.Text = "Your Text Value goes Here";
         else if(childControl.Controls.Count > 0)
             ChangeXRLabels(childControl);
    }
}

那么,您是说要根据一个窗体上发生的情况更改多个windows窗体上的标签。是否正确?如果控件类型i为s
XRLabel
,则在循环内对控件执行foreach循环检查,如果是,则创建该标签的实例并更改标签。text还确保创建一个静态变量,如果needed@Jamie是的,现在它只更改单击的一个。但是,我正在添加另一个标签,该标签将显示“全部”或“无”,并切换标签的所有实例。@DJKRAZE循环将转到何处。根据lable.text是否为奇数/偶数,记录鼠标点击次数并切换lable.text会更容易吗?我将在答案部分粘贴一个示例,说明您可以做些什么。这取决于您如何处理/尝试它,并做任何您认为合适的事情。您甚至可以将该值保留在列表中,并在列表或列表中创建两个字段数组等,并且在加载每个页面时,您可以根据某些条件运行/执行该方法。选项是无限的。这给了我一个错误,说明我无法将控件转换为和xrlabel。还有接线员!=无法应用于xrlabel和string.Awesome类型的操作数。。很高兴我能帮上忙