【问题标题】:Display a notification on form在表单上显示通知
【发布时间】:2015-12-04 10:58:15
【问题描述】:

我目前正在开发一个在 DataGridView 中显示客户端的应用程序。通过右键单击,用户可以从网格中删除客户端,显示更多详细信息或将客户端放入列表框以供以后使用,而无需再次滚动整个网格。
如果选定的客户端已经在 ListBox 中,则不会再次添加。

到目前为止,这一切正常,但我不希望我的应用程序在用户第二次尝试存储客户端时什么都不做。
我希望表单在鼠标光标附近显示一个小文本通知,上面写着“客户端已在列表中”,并在一秒钟后自动消失。

遗憾的是,我只能找到气球通知和 Microsoft 服务通知教程。

private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    switch (item.Text)
    {
        case "Show detailed info":
            // Shows detailed info
            break;
        case "Store client for later":
            var c = ClientFactory.GetClient(ClientView.CurrentRow)
            if (listBox1.Items.Cast<object>().Any(mandant => mandant.ToString() == m.ToString()))
            {
                // Something like Notification.Show();
                return;
            }
        case "Delete client":
            // Deletes client
            break;
    }
}

【问题讨论】:

  • 我认为最简单的解决方法是在客户端已经存储时禁用(而不是隐藏)按钮,以及一个工具提示(我相信即使按钮被禁用,它仍然应该显示)解释为什么它被禁用。
  • @BjarkeSøgaard 我没有按钮,我使用的是 ContextMenutStrip。
  • 然后为该条目禁用相应的 MenuStripItem
  • 添加了代码来展示东西是如何工作的。在单击该操作的 MenuStripItem 后,程序会检查客户端是否已存储。
  • 无论光标在哪里,你都想在按钮或其他控件或光标附近显示通知

标签: c# winforms user-interface


【解决方案1】:

答案:
最后我做了以下事情:

  • 将现有项目检测从 contextMenuStrip1_ItemClicked 移到 ClientView_CellMouseClick,当用户右键单击网格时调用它
  • 禁用 MenuStripItem 以存储客户端
  • 将其 ToolTipText 属性设置为“客户端已在列表中”

像魅力一样工作。

感谢 Bjarke 抽出宝贵时间。

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 2021-09-29
    • 2014-11-05
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多