C#为什么这段代码不能正确显示GUI?

C#为什么这段代码不能正确显示GUI?,c#,winforms,user-interface,C#,Winforms,User Interface,我知道这不是最好的/正常的方法,但我需要从一个包含GUI的bo实例的类向GUI写入数据,所以我要调用Program.method()并使用函数在程序中写入GUI。但是,当我运行上面的GUI时,会显示windows沙漏吗 有人能给我一个快速的解决方案,这样我仍然可以粗略地显示GUI,让应用程序代码运行,然后再写入GUI吗 您可以将try块移动到事件,以便在表单开始处理之前显示表单。您可以将try块移动到事件,以便在表单开始处理之前显示表单。您需要调用该方法 应该使它工作。您需要调用该方法 应该会成

我知道这不是最好的/正常的方法,但我需要从一个包含GUI的bo实例的类向GUI写入数据,所以我要调用Program.method()并使用函数在程序中写入GUI。但是,当我运行上面的GUI时,会显示windows沙漏吗


有人能给我一个快速的解决方案,这样我仍然可以粗略地显示GUI,让应用程序代码运行,然后再写入GUI吗

您可以将try块移动到事件,以便在表单开始处理之前显示表单。

您可以将try块移动到事件,以便在表单开始处理之前显示表单。

您需要调用该方法

应该使它工作。

您需要调用该方法


应该会成功的。

嘿,伙计们,我终于成功了!我将GUI创建放在一个线程中,并给我的GUI类一个methodinvoker,它允许我使用委托从另一个线程写入

我的数据类在程序中调用一个方法,它将字符串发送到gui和wala中的methodinvoker


谢谢你的想法和帮助

嘿,伙计们,我终于做到了!我将GUI创建放在一个线程中,并给我的GUI类一个methodinvoker,它允许我使用委托从另一个线程写入

我的数据类在程序中调用一个方法,它将字符串发送到gui和wala中的methodinvoker


谢谢你的想法和帮助

首先:我假设Windows窗体是由于新的Form1()而产生的;实例化。我错了吗?第二:你想做什么,你的目标是什么?您希望实现什么?在沙漏显示时,点击control+break按钮以打断代码。我想这会突出你的问题所在。我有一个接口类,它接收关于注册表的数据。我想将这些数据写入GUI。问题是我在使用钩子,没有地方可以放置GUI声明,它只能被调用一次,因为每次看到一个动作时,代码的其余部分都会发生。所以我想在注册表监控开始之前声明GUI,然后在注册表数据程序.Form1.ListBox.items.insert(0,String)。。。。。但是我首先在显示GUI时遇到了沙漏问题:我假设Windows窗体是由新的Form1()引起的;实例化。我错了吗?第二:你想做什么,你的目标是什么?您希望实现什么?在沙漏显示时,点击control+break按钮以打断代码。我想这会突出你的问题所在。我有一个接口类,它接收关于注册表的数据。我想将这些数据写入GUI。问题是我在使用钩子,没有地方可以放置GUI声明,它只能被调用一次,因为每次看到一个动作时,代码的其余部分都会发生。所以我想在注册表监控开始之前声明GUI,然后在注册表数据程序.Form1.ListBox.items.insert(0,String)。。。。。但是我在显示GUI时遇到了沙漏问题嘿,好吧,GUI工作得很好(谢谢!!),但是如果GUI现在不执行,它就会显示我的代码,因为GUI就像一个while循环?是的,因为try-catch中的代码只有在关闭模式窗体后才会执行(这是通过调用ShowDialog方法得到的结果)…只需将try子句放在ShowDialog()方法之前。(更新的答案)嘿,好的,GUI工作正常(谢谢!!)但如果GUI现在不执行,它就会显示我的代码,因为GUI就像一个while循环?是的,因为try-catch中的代码只有在关闭模式表单后才会执行(这是通过调用ShowDialog方法得到的)…只需将try子句放在ShowDialog()之前方法。(最新答覆)
class Program
{
    static String ChannelName = null;
    static Form1 f;

    static void Main()
    {
        f = new Form1();
        f.Show();
        try
        {
            MY CODE WHICH CALLS INTO ANOTHER CLASS BUT CANNOT PASS THE GUI INSTANCE AS
            IT USES REMOTING
        }
    }
}
    static void Main(string[] args)
    {
        f = new Form1();

        try
        {
            f.label1.Text = "Changed Label from Console!";
            f.textBox1.Text = "Changed Textbox from Console!";
        }
        catch (Exception)
        {

            throw;
        }

        f.ShowDialog();
    }