【问题标题】:How can I programmatically add a Context Menu Strip to all controls on a win Form in c#如何以编程方式将上下文菜单条添加到 c# 中 win 表单上的所有控件
【发布时间】:2017-08-04 22:20:07
【问题描述】:

我有一个上下文菜单条 (contextColorOptions),它允许更改访问上下文菜单条的任何源控件的背景颜色和前景色。

    private void backgroundColorToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (colorDialog1.ShowDialog() == DialogResult.OK)
        {
            contextColorOptions.SourceControl.BackColor = colorDialog1.Color;
        }
    }

    private void textColorToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (colorDialog1.ShowDialog() == DialogResult.OK)
        {
            contextColorOptions.SourceControl.ForeColor = colorDialog1.Color;
        }
    }

    private void resetColorsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        contextColorOptions.SourceControl.BackColor = DefaultBackColor;
        contextColorOptions.SourceControl.ForeColor = DefaultForeColor;
    }

我希望能够为表单中的每个控件分配相同的上下文菜单条。

我试过了:

        foreach (Control cntrl in this.Controls)
        {
            cntrl.ContextMenuStrip = contextColorOptions;
        }

但这似乎不起作用。有人有什么想法吗? 提前谢谢!

【问题讨论】:

    标签: c# winforms right-click contextmenustrip


    【解决方案1】:

    注意并非所有控件都具有相同的属性,您可以以相同的方式调用。您必须先检查该控件是否具有名为 backcolor、forecolor 或 contextmenustrip 的属性名称。关键是查询控件的类型,改变背景和面板的颜色,并为里面的所有设置透明色。

    还有其他简单的方法,但这是可行的:

    foreach (Control cntrl in this.Controls)
            {
                if (cntrl.getType() == "System.Windows.Forms.Form")
                      cntrl.ContextMenuStrip = contextColorOptions;
            }
    

    希望对您有所帮助!!。如果你想获取控件的属性来检查控件是否具有你想要的属性,你必须使用这样的东西:

    var controlType = control.GetType();
            var property = controlType.GetProperty("The property you are looking for", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
    

    如果属性 != null 你明白了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多