none
用wpf窗体模仿控制台窗口,像Console.Write该方法每次打印新字符串时的即时刷新控制台里的数据的数据是如何实现的? RRS feed

  • 问题

  •  private static MassageWindow mw = new MassageWindow();
            public static void print(string content)
            {
                if (mw.IsLoaded == true)
                {
                    Task.Run(() =>{
                        mw.Message.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            mw.Message.Text += content;
                        }));
                    });
                }
                else
                {
                    mw.Show();
                    Task.Run(() => {
                        mw.Message.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            mw.Message.Text = content;
                        }));
                    });
                }

    打印方法和静态消息框窗体对象,想通过Task与Dispatcher配合实现每次调用Print方法时刷新MassageWindow对象中的名叫Message的TextBox的文本框的数据。

    private void Application_Startup(object sender, StartupEventArgs e) { MessageUtil.print("第一行"); Thread.Sleep(1000); MessageUtil.print("第二行"); Thread.Sleep(1000); MessageUtil.print("第三行"); } static void Main(string[] args) { Console.WriteLine("第一行"); Thread.Sleep(1000); Console.WriteLine("第二行"); Thread.Sleep(1000); Console.WriteLine("第三行"); }

    控制台打印与Wpf模拟控制台窗体打印

    wpf模拟控制窗口中,在Application_Startup事件代码内,测试所有将自字符串打印到消息框的方法,但运行结果显示是必须等Application_Startup事件执行完成后才会在Message的TextBox文本框全部显示,不像控制台的 Console.Write方法。打印一个在控制台窗口上刷新一个。如何解决这个问题?




    • 已编辑 Trian555 2019年2月11日 5:54
    2019年2月9日 5:59

全部回复

  • Hi Trian555,

    >> wpf模拟控制窗口中,在Application_Startup事件代码内,测试所有将自字符串打印到消息框的方法,但运行结果显示是必须等Application_Startup事件执行完成后才会在Message的TextBox文本框全部显示,不像控制台的 Console.Write方法。打印一个在控制台窗口上刷新一个。如何解决这个问题?

    根据你的描述,你应该尝试创建一个窗体,这个窗体上使用一些文本控件,然后模拟类似控制台程序并你的打印方法,在文本控件上打印输出。


    Best Regards,

    Yong Lu

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年2月11日 5:22
    版主
  • Hi Trian555,

    >> wpf模拟控制窗口中,在Application_Startup事件代码内,测试所有将自字符串打印到消息框的方法,但运行结果显示是必须等Application_Startup事件执行完成后才会在Message的TextBox文本框全部显示,不像控制台的 Console.Write方法。打印一个在控制台窗口上刷新一个。如何解决这个问题?

    根据你的描述,你应该尝试创建一个窗体,这个窗体上使用一些文本控件,然后模拟类似控制台程序并你的打印方法,在文本控件上打印输出。


    Best Regards,

    Yong Lu

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    模拟文本框的窗体已经创建好了,只是运行测试的时候,每次调用Print方法不像控制台的Consol.Write方法一样都不是实时刷新的。
    2019年2月11日 5:57
  • Hi Trian555,

    >>模拟文本框的窗体已经创建好了,只是运行测试的时候,每次调用Print方法不像控制台的Consol.Write方法一样都不是实时刷新的。

    你方法在Application_Startup去print 是不会实时刷新(模拟文本框的窗体还未显示)。 你需要在模拟文本框的窗体程序运行起来之后,再执行类似的累计添加文本操作。比如,通过定时器或者计时器来添加显示。或者后台任务输出内容到模拟文本框的窗体中。

     
           private void Application_Startup(object sender, StartupEventArgs e)
            {
           
            }
    Best Regards,

    Yong Lu

     

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年2月11日 6:08
    版主