【问题标题】:Need to use a color dialog result in a separate Windows Form需要使用颜色对话框导致单独的 Windows 窗体
【发布时间】:2014-01-18 12:59:04
【问题描述】:

请放轻松我对编码非常陌生,并且坚持一些我确信非常简单的东西。

目前我有一个选项表单,用户可以在其中从标准colordialog.showdialog() 中进行选择,结果在表单上作为标签显示为示例

If(backColorDialog.Showdialog() == DialogResult.OK); 
   backColorLabel.BackColor = backColorDialog.Color; // set to label to show option selected

我需要采用该选定颜色并将其应用于另一个 Windows 窗体中“游戏板”的背景颜色。我已经将“游戏板”表单中的引用添加到选项表单中。

“游戏板”位于TableLayoutPanel 上,因此我需要能够更改面板的BackColor

TableLayoutPanel1.BackColor = (colordialog result from options form)

就像我说的那样,我是新手,感谢您提供的任何帮助

【问题讨论】:

    标签: c# windows winforms background-color colordialog


    【解决方案1】:

    在您的配置表单上创建一个属性:

    Color SelectedColor { get; private set; }
    

    并为它分配用户选择:

    if (backColorDialog.Showdialog() == DialogResult.OK)
    {
        backColorLabel.BackColor = backColorDialog.Color;
        SelectedColor = backColorDialog.Color;
    }
    

    (请注意您的代码中有一个错误 - ;if 行之后)

    在此之后,您可以在主表单中从配置表单中读取它:

    TableLayoutPanel1.BackColor = optionsForm.SelectedColor;
    

    正如justin.chmura 在下面的 cmets 中所指出的,您还可以考虑使用 events 的不同方法。当用户选择不同的颜色时,您的选项表单会引发一个事件,并且主表单的事件处理程序会立即在游戏面板上应用此颜色。不同之处在于它会立即更新颜色。当不需要时,上述带有属性的解决方案就足够了。

    【讨论】:

    • 我还要补充一点,我认为“选项”表单会引发某种事件,游戏板所在的表单可以处理这些事件。在该处理程序内部是您想要从上面的属性设置背景颜色的地方。如果您需要一些有关事件的参考资料:msdn.microsoft.com/en-us/library/dacysss4(v=vs.110).aspx
    • @justin.chmura 如果您希望能够在不关闭表单的情况下更改颜色,您只需要引发一个事件,这里不是这种情况。表单的关闭已经为调用者提供了一个事件来挂钩,所以他们所需要的只是获取信息的属性。
    • 当我在进行更改后运行此命令时,我收到一个错误消息“类型或命名空间 'selectedcolor' 不存在于命名空间 'options' 中。
    • 我在 Visual Studios 中工作,并通过解决方案资源管理器创建了参考。我需要在代码中做任何其他参考吗?抱歉,我应该从一开始就明确这一步
    • @Servy 也是如此。取决于他们正在寻找的经验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2011-07-22
    • 1970-01-01
    相关资源
    最近更新 更多