【问题标题】:Excel unresponsive when InputBox open, c#输入框打开时Excel无响应,c#
【发布时间】:2012-11-14 21:38:14
【问题描述】:

我正在使用 c# 构建一个 excel 插件,我希望用户选择一个范围。 我已经设置了输入框,并且在作为文本输入时接收范围很好。 问题是当输入框打开时 excel 没有响应,用户无法转到 excel 并仅用鼠标选择范围,在我停止调试后,我收到一条消息“文件现在可用”。

这是代码的一部分

Excel.Range str = excelApp.InputBox("Select table range", "", _ 
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 8);
MessageBox.Show("range = " + this.range.get_Address());

【问题讨论】:

  • 你是说如果你在输入框中输入范围值,它可以工作,但如果你想用鼠标选择,它就不能工作?
  • 几乎准确,当我输入范围值时它确实有效。鼠标无法选择,好像excel卡住了,什么都没有反应。
  • 你可以在 Excel 本身中尝试这个 - 意思是使用一个按钮,在 excel 模块中输入框并尝试从 Excel 中选择范围?因此,您可以缩小范围是互操作问题还是 Excel 问题。
  • 我真的不知道该怎么做。当我继续一个简单的功能时,我可以选择一个范围。我不知道如何在 excel 中创建输入框
  • 我的意思是在 excel vba 中进行一个简单的测试,以缩小问题的范围。我现在不在机器前。但是你可以尝试这个链接来获得一个小的 vba 代码 sn-p 来测试任何小狗行为的 excel 环境。 Reference 将此代码放入 vba 模块并编译。如果您有问题,我可以在我回到机器时为您提供帮助……或者只是希望其他人会。对不起。

标签: c# excel excel-addins inputbox


【解决方案1】:

这完全是任何 Windows 用户界面的设计和标准。 InputBox 函数显示一个模态对话框。对话框总是禁用应用程序中的其他窗口。非常烦人但重要的安全措施,以防止由于重新进入而出现问题。 This answer 解释了为什么模态对话框会这样。

您必须编写自己的非模态输入表单来解决该限制。请注意这样做时可能遇到的麻烦,如链接答案所示。您不必担心用户关闭用户界面问题,这也会杀死表单。但肯定是用户重新发布命令问题。

【讨论】:

  • 这是对我头疼的更好解释。希望它适用于greenpeter。我很想知道它是否解决了这个问题,因为他当前的代码看起来没有问题。 :)
  • 我想我理解这个问题,但我并不完全理解我需要做些什么来解决它。我是初学者,不胜感激。
  • 别解决它,用户熟悉对话框的工作方式。
【解决方案2】:

看看这个:how to select an excel range using RefEdit control

如果您需要,我可以更新代码。请先尝试一下。

【讨论】:

  • 谢谢,这超出了我的水平,我完全是初学者。
  • 对于我提供的链接,教程就在那里 - 当您尝试某些事情时,您会获得很多乐趣:D 取决于您有多少时间。 最重要的是,您是否设法解决了您的问题以及如何解决?
  • 不,没有解决。不幸的是,我目前没有太多时间。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
相关资源
最近更新 更多