小编Jay*_*ayK的帖子

如何使用VBScript中的常用"另存为"对话框?

我想让我的VBScript显示Windows另存为对话框,但我找不到如何做到这一点.

使用此代码:

Dim sfd
Set sfd = CreateObject("UserAccounts.CommonDialog")
sfd.ShowOpen
Run Code Online (Sandbox Code Playgroud)

我可以得到一个Open对话框,但是没有ShowSave这个对象的方法(因为在Visual Basic非脚本中似乎有类似的对象).

我搜索了StackOverflow并搜索了"[vbscript] save dialog"(以及"Windows Script Host"),但我只找到了关于从网页访问常用对话框的线程和BrowseForFolder对话框的解决方案,而没有关于调用Save对话框的内容.

实际上,我可以使用"打开"对话框来实现我的目的,因为我只需要一个文件名...但是由于我想将某些东西保存到选定的路径,对话框的标题栏中的"另存为"会更合适.

vbscript common-dialog savefiledialog

18
推荐指数
3
解决办法
3万
查看次数

“等于某些字段中的任何一个都相等”的 hashCode 实现

如果它们的字段之一相等,我希望特定类的对象相等。如何为这样的类编写一致的 hashCode 方法?

(免责声明,因为我知道这不是最佳实践:该类是另一个类的包装器,应该用于 Maps 中的键。这两个不同的具有相同字段的对象将导致相同的 Map 条目。实际上每个字段都会自行识别底层对象,但我并不总是为两个可用对象提供相同的识别字段。我无法控制并因此更改这种“模棱两可”的识别机制。解决这个问题的替代解决方案也是受欢迎的。)

是否有相应的实施 hashCode() 的策略?我只知道在 equals 中涉及连接(如 &&)的实现。如果任何一个字段相等,如何确保 hashCode() 相同?

这是简化的 equals 方法,我想为其编写一致的 hashCode() 实现:

public boolean equals(C other)
{
    return (field1 != null && field1.equals(other.field1))
            || (field2 != null && field2.equals(other.field2))
            || (field3 != null && field3.equals(other.field3));
}
Run Code Online (Sandbox Code Playgroud)

编辑:根据输入数据,不会出现 (1, 2, 3) 等于 (1, 6, 7) 的情况。生成的对象仅使得某些字段可以为空,但不会像示例中那样自相矛盾。简单地说,实际上等于 (1, 2, 3) 的唯一组合应该是 (1, 2, 3), (1, null, null), (null, 2, null), (1, 2, null) 和等等。我承认这种方法不是特别可靠。

java equals hashcode

5
推荐指数
1
解决办法
1534
查看次数

如何避免在显示和隐藏控件时更改控件的 z 顺序?

我有一个表单,上面有一些控件(面板、分组框等),所有这些都已control.Dock = DockStyle.Top设置。根据窗体上组合框的选定值,只有其中一些面板应该同时可见(因为隐藏的面板不适用于选定的选项)。对接是为了让UI看起来更紧凑。

每当 ComboBox 选择更改时以及在 Form 的 Shown 事件中,这些面板的 Visible 属性都会更改(因为当首次显示 Form 并且 ComboBox 选择尚未更改时,并非所有面板都应该可见)。

现在,问题是,当我关闭窗体时(因为它是一个模式对话框,它没有被破坏),稍后重新打开它并更改组合框选择,窗体顶部面板的显示顺序已更改。直到表单关闭一次后才会发生这种情况。我知道停靠控件的显示顺序与父控件的 ControlCollection 中这些控件的顺序相关联。这也决定了控件的 z 顺序,因此决定了问题的标题。

是什么导致控制顺序发生变化以及如何避免它?

.net z-order visible show-hide winforms

3
推荐指数
1
解决办法
743
查看次数