【问题标题】:c# combobox in form opened in panelc# 在面板中打开的表单中的组合框
【发布时间】:2016-03-20 03:30:57
【问题描述】:

我在 winforms c# 中遇到了ComboBox 的问题。主窗口中的组合框工作正常,但我在主窗口面板中打开的组合框已损坏。奇怪的事情开始发生......我不能点击它来输入。我只能打开列表,选择一个然后输入。我也无法将光标定位在文本中间,因为它突出显示了整个文本。我在面板中打开表单发布代码:

public void otworzOkno(Form _form)
{
    if (Application.OpenForms[_form.Name] != null)
    {
        Application.OpenForms[_form.Name].WindowState = FormWindowState.Normal;
        Application.OpenForms[_form.Name].BringToFront();
    }
    else
    {
        _form.TopLevel = false; 
        _form.AutoScroll = true;
        this.panel.Controls.Add(_form);
        _form.Show();
        _form.BringToFront();
    }      
} 

解释问题的视频:https://youtu.be/PrVxFWvhPyc

【问题讨论】:

  • “坏了”?那应该是什么意思?以及为什么要使用 Application.OpenForms(从未见过这样的方法并且经常使用 Winforms)?你能解释一下你想要什么,你尝试了什么,你有什么问题吗? (即,清晰的描述和/或错误消息;通过尝试避免诸如“它不起作用”或“损坏”或类似的陈述)您应该能够通过记住给定容器来访问任何控件而不会出现任何问题(即,如果您在面板中包含控件,则容器将是该面板而不是主窗体)。
  • 我得到了带有菜单和面板的主窗体。当我单击按钮时,我会在面板中打开新表单。在面板中打开的表单与组合框有一些问题。我不能点击它来写文字。当我打开下拉列表并为示例“ac”选择项目时,我无法单击中间写“abc”,因为它会突出显示整个文本。最大的问题是写在里面。我发现那是因为表单是在面板中打开的,当我“正常”以单独的形式打开它时,它可以正常工作。
  • 我们一步一步来。 winforms中的基本控件是表单,而不是面板。那就是:首先你有一个表格,在里面,你可以有一个面板或 1000 或其他任何东西,但不是这样!每个窗体基本上都是一个窗口。
  • 也许我在 youtube 上发布了一个视频。我们可能因为我的英语不好而误会了。我会在几秒钟内记录并发布它
  • 视频?!不,不要那样做。这里问的重点不是问我,而是写下任何人(现在和将来)都可能理解的清晰想法。 SO不适用于学习基础知识。如果您不确定如何使用本网站,您应该查看帮助页面。您应该尝试自己完成所有学习(询问是一种不好的学习方式)。抱歉,我不会在这里提供更多帮助(2-3 cmets 可以,但除此之外没有其他帮助)。 PS:请注意,我们正处于“特殊日子”,这就是为什么您的问题已被赞成,但不要习惯这一点(通常,它会被反对)。

标签: c# winforms combobox


【解决方案1】:

没有更多信息,我们无能为力,但我会尽力而为。
首先,要在表单中包含表单,您必须使用 MDI (https://msdn.microsoft.com/en-us/library/7aw8zc76(v=vs.110).aspx)。如果不是,请停在这里并修复它...
其次,在 MDI 应用程序中,设置事件可能会变得混乱,尤其是当您试图让外部表单反馈内部表单时...检查一下!
第三,为了更好地了解发生了什么,请尝试订阅 Focus 等事件,并检查还有谁在听……也许有人正在覆盖某个事件而你没有意识到……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多