【问题标题】:what is the best way to update status bar message?更新状态栏消息的最佳方法是什么?
【发布时间】:2011-09-23 10:12:33
【问题描述】:

我可以知道在 MDI 应用程序中更新状态栏消息的最佳方法是什么。我遇到过这段代码,用于从子窗体的父窗体的状态栏中显示消息,但我想根据用户的操作更新消息. 在父窗体中

private void Form1_Load(object sender, EventArgs e)
    {
        FrmShiftManagement newMDIChild = new FrmShiftManagement();
        newMDIChild.MdiParent = this;
        this.LayoutMdi(MdiLayout.Cascade);
        newMDIChild.Show();

        StatusMessage.Text = "Ready";

        //toolstriplabel1.Alignment = ToolStripItemAlignment.Right;
    }



 public void ShowStatus(string status)
    {
        this.StatusMessage.Text = status;
        Application.DoEvents();
    }

在子窗体中

((FrmTRMS)this.MdiParent).ShowStatus("Item(s) Saved");

当保存数据或执行任何操作时,此代码工作正常。现在如何在保存或删除数据后将父表单原始消息设置回状态栏。

【问题讨论】:

  • 你到底遇到了什么困难?
  • 代表和活动应该可以帮助你!
  • 您现在保存后似乎正在更改它(基于使用的过去时)
  • 我不喜欢那个Application.DoEvents()。那是为了什么?

标签: c# statusbar


【解决方案1】:

你可以这样做:

string oldMsg = "";
public void ShowStatus(string status)
{
    oldMsg = this.StatusMessage.Text;
    this.StatusMessage.Text = status;
    this.StatusMessage.Invalidate(); // To force status bar redraw
    this.StatusMessage.Refresh();
}

public void RestoreStatus()
{
    this.StatusMessage.Text = oldMsg;
}

并在子表单关闭或任何时候使用RestoreStatus()

【讨论】:

  • 嗨..我尝试使用您的代码,但它没有显示 StatusMessage 的刷新方法..
  • @Nazima: Refresh() 在每个窗口控件中,所以如果 StatusMessage 是一个状态栏,它应该有 Refresh 方法。
【解决方案2】:

我有解决方案 w.r.在状态栏中显示从子表单到父表单的消息..我已经通过这个链接..http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx 它非常有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多