C# 在学习monodevelop时,我很难让一个消息框出现

C# 在学习monodevelop时,我很难让一个消息框出现,c#,linux,monodevelop,gtk#,C#,Linux,Monodevelop,Gtk#,我在monodevelop工作并学习c#。。。。 我试图让一个消息框出现,但我无法让它正常运行 这是我的密码: using System; using Gtk; using GtkSharp; public partial class MainWindow : Gtk.Window { public MainWindow () : base(Gtk.WindowType.Toplevel) { Build (); }

我在monodevelop工作并学习c#。。。。 我试图让一个消息框出现,但我无法让它正常运行

这是我的密码:

using System;  
using Gtk;  
using GtkSharp;  

public partial class MainWindow : Gtk.Window  
{
    public MainWindow () : base(Gtk.WindowType.Toplevel)  
    {  
        Build ();  
    }  

    protected void OnDeleteEvent (object sender, DeleteEventArgs a)
    {
        Application.Quit ();
        a.RetVal = true;
    }
    protected virtual void OnButton11ResizeChecked (object sender, System.EventArgs e)
    {
        System.Windows.Forms.MessageBox.Show("Hello World Again!!");
    }

}
我缺少什么?

您不能混合使用GTK和System.Windows.Forms UI工具包。您需要使用GTK对话框,如下所示:

void ShowMessage (Window parent, string title, string message)
{
    Dialog dialog = null;
    try {
        dialog = new Dialog (title, parent,
            DialogFlags.DestroyWithParent | DialogFlags.Modal,
            ResponseType.Ok);
        dialog.VBox.Add (new Label (message));
        dialog.ShowAll ();

        dialog.Run ();
    } finally {
        if (dialog != null)
            dialog.Destroy ();
    }
}

另请参见。

您正在引用GTK,GTK是mono中的捆绑图形工具包,但正在尝试使用Windows。虽然mono中也包含表单,但它是另一个工具包:

System.Windows.Forms:这是Windows中使用的工具包,mono上的实现“模拟”了该控件在mono运行的平台下的绘制和行为

Gtk:这是一个在许多开源应用程序(Firefox、Pidgin等)中使用的工具包,GTKSharp只是这个库的实现,但暴露在mono上可用的.Net语言中,尽管您也可以直接与Visual Studio或Microsoft编译器一起使用


总之,正如迈克所说,你不能同时使用它们,你必须选择其中之一。如果你只是在学习.Net,我建议你学习GTK而不是Windows窗体。Windows窗体是一种很差的基本工具包,很快你就会发现你需要从第三方学习一种新的API来做Windows窗体不能做的事情(DevExpress,Infragistics),Gtk可以很容易地扩展和调整以适应你的需要。

注意,Linux上也很大程度上支持Winforms本身;就像其他安威尔指出的那样,下定决心,为什么这会如此复杂?如何获得父窗口?