C# 从控件列表引发事件

标签 c# list events controls trackbar

警告:嵌入式软件开发人员正在尝试构建 PC 软件!

我正在尝试连接一个通过串行接口(interface)与 PC 通信的硬件。 PC 软件 (C#) 定期发送一个字节数组,我想使用一些轨迹条对其进行调整。

我没有在设计 View 上添加 8 个轨迹栏,而是添加一个来帮助我对齐它,然后创建一个列表,我在加载时填充它,如下所示:

public partial class FormDmxTemplate : Form
{
    // Controls
    // Create a list of tracbars.
    List<TrackBar> trackBarDmx = new List<TrackBar>();

    public FormDmxTemplate()
    {
        InitializeComponent();            
    }

    private void FormDmxTemplate_Load(object sender, EventArgs e)
    {
        // Add first instance on the list
        trackBarDmx.Add(trackBarDmx1);
        // Generate 7 more, 8 total, of each
        // Copy settings, and place them next to each other
        for (int i = 1; i < 8; i++)
        {
            // Trackbars
            trackBarDmx.Add(new TrackBar());
            trackBarDmx[i].TickStyle   = trackBarDmx[0].TickStyle;
            trackBarDmx[i].Orientation = trackBarDmx[0].Orientation;
            trackBarDmx[i].Minimum     = trackBarDmx[0].Minimum;
            trackBarDmx[i].Maximum     = trackBarDmx[0].Maximum;
            trackBarDmx[i].Size        = new System.Drawing.Size(trackBarDmx[0].Size.Width, trackBarDmx[0].Size.Height);
            trackBarDmx[i].Location    = new System.Drawing.Point(trackBarDmx[i-1].Location.X + 60, trackBarDmx[0].Location.Y);
            this.Controls.Add(trackBarDmx[i]);
        }
    }
}

是否可以像这样为所有 List 成员举办事件?

private void trackBarDmx1_Scroll(object sender, EventArgs e)
{

}

这意味着我想更新字节数组中的相关字节以匹配 TrackBar 值,如果可能的话使用事件。

注意:这是我通过另一个表单加载和关闭的表单模板。

最佳答案

您可以在创建 TrackBar 时订阅事件。所有的都可以有相同的事件处理程序:

trackBarDmx[i].Scroll += trackBarDmx1_Scroll;

然后在处理程序中你可以找出哪个是这个 TrackBar 以及它在哪个索引处(如果需要的话)

private void trackBarDmx1_Scroll(object sender, EventArgs e)
{
    TrackBar bar = sender as TrackBar;
    int trackBarIndex = this.trackBarDmx.IndexOf(bar);
}

关于C# 从控件列表引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21987402/

相关文章:

c# - 是否可以使用 Moq 从实例中获取模拟实例?

c# - 在 C# 中构建字符串数组并检查空值?

Python:如何使用循环仅访问列表中的某些 boolean 元素?

ios - 构建需要键盘输入的自定义iOS控件

c# - Json 对象的动态/解析

c# - 当投影到 Dto 时,如何动态构建 'where' 子句?

Python - 如何合并和交换两个列表的每个第 n 个元素

python - 使用用户输入命名列表

c++ - QT:忽略复选框选择的关键事件

.net - F# 中 CLI 事件的 C# 样式事件访问器