学习monodevelop并且无法显示消息框

时间:2010-12-09 22:23:42

标签: 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 ();  
    }  

    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!!");
    }

}

我缺少什么?

2 个答案:

答案 0 :(得分:12)

您无法混合使用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 ();
    }
}

另见this question

答案 1 :(得分:1)

您正在引用GTK,它是单声道的捆绑图形工具包,但正在尝试使用Windows.Forms,虽然也包含在单声道中,但它是一个不同的工具包:

System.Windows.Forms:这是Windows中使用的工具包,单声道上的实现“模拟”如何绘制此控件并在单声道运行的平台下运行。

Gtk:这是许多OpenSource应用程序(Firefox,Pidgin等)中使用的工具包,而GTKSharp只是这个库的实现,但是暴露于单声道可用的.Net语言,尽管你可以直接在Visual Studio或Microsoft编译器中使用它。

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