首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Winforms中C++-CLI按钮数组到C#按钮数组

在Winforms中C++-CLI按钮数组到C#按钮数组
EN

Stack Overflow用户
提问于 2017-11-14 23:09:20
回答 2查看 231关注 0票数 1

我正在用C# Winforms设计一个应用程序(这是第一次)。过去,我在C++中设计了几个应用程序,并且很难将我的一些C++-CLI函数转换为C#。

我有5个按钮沿边栏,以切换按钮的可见性,相应的面板,每个按钮点击。为了做到这一点,我将所有其他面板的可见性设置为false。为了在C++-CLI中实现这一点,我做了以下工作:

代码语言:javascript
复制
private: System::Void panels_Click(System::Object^  sender, System::EventArgs^  e) {
    System::Windows::Forms::Button ^ currentbutton = (System::Windows::Forms::Button ^) sender;
    array < Panel ^ > ^ objects = { panel1, panel2, panel3, panel4, panel5, panel6};
    array < Button ^ > ^ buttons = { button1, button2, button3, button4, button5, button6 };

    for (int i = 0; i < 6; i++) {
        if (buttons[i]->Equals(currentbutton)) {
            objects[i]->Visible = true;
        }
        else objects[i]->Visible = false;
    }
}

我遇到的问题是“数组面板^”部分,因为我在C#中找不到相应的部分。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-14 23:26:42

数组在C#中使用TypeName[]声明。

代码语言:javascript
复制
Panel[] objects = { panel1, panel2, panel3, panel4, panel5, panel6 };
Button[] buttons = { button1, button2, button3, button4, button5, button6 };
票数 1
EN

Stack Overflow用户

发布于 2017-11-14 23:23:34

可以将Controls集合强制转换为List<Control>,然后访问控件名称以进行比较。Cast<T>()方法是linq扩展方法,因此您必须将using System.Linq;添加到您的命名空间中:

代码语言:javascript
复制
private void panels_Click(object sender, EventArgs e)
{
    List<string> panelNames = new List<string>
    {"panel1", "panel2", "panel3", "panel4", "panel5", "panel6"};

    List<string> buttonNames = new List<string>
    {"button1", "button2", "button3", "button4", "button5", "button6"};

    List<Control> panels = this.Controls.Cast<Control>()
        .Where(ctrl => panelNames.Contains(ctrl.Name)).ToList();

    List<Control> buttons = this.Controls.Cast<Control>()
        .Where(ctrl => buttonNames.Contains(ctrl.Name)).ToList();

    Button thisButton = sender as Button;

    for (int i = 0; i < buttons.Count; i++)
    {
        if (i < panels.Count) panels[i].Visible = buttons[i] == thisButton;
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47296775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档