我在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!!");
}
}
我缺少什么?
答案 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 ();
}
}
答案 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可以很容易地扩展和根据您的需求调整。