终于发现ATI的显卡驱动可以用了,于是可以不再忍受800*600的分辨率了
做为一个.net爱好者怎么可以不尝试一下mono呢?
于是apt安装mono,顺便赞一把debian
安装好debian以后,我写了一个简单的对话框试了试
一,用monoDevelop新建工程,我的名字是gtkTest,gtk# 2.0 Project。
二,编译运行已经出现了一个gnome的窗体。不过上面什么都没有
三, Main.cs是定义程序入口的,暂时我还没有用到他。
四,打开MyWindow.cs,首先在MyWindow的构造函数中添加一个Button。
Button mybtn = new Button("Click me");
把按钮加入窗体
this.Add(mybtn);
五,编译运行,可以看到在窗口中已经有了一个按钮,并且是充满怎个窗口的。这里和
windows是不一样的,一个窗口好象只能增加一个控件,比如说要在add一个Label
在编译时刻可以通过,但是运行时刻会有Warning。而且控件大小不可调。
六,添加单击事件处理函数
构造函数中增加单击事件
mybtn.Clicked+=new EventHandler (mybtn_click);
添加事件处理的函数
void mybtn_click(object sender,EventArgs args)
不要在里面直接用MessageBox.Show()这个函数是没有的。
看了一下Doc,发现有一个MessageDialog,估计应该是它了。
查看构造函数,MessageDialog(Window, DialogFlags, MessageType,
ButtonsType, string, params object[])
第一个是父窗口,第二个的意思是他的存在规则吧,我是这样理解的。
最后一个参数不知道什么意思,看他的例子也没有最后一个,我也没有写
根据example在事件处理的函数里面加上
MessageDialog md = new MessageDialog((Window)this,
DialogFlags.DestroyWithParent,
MessageType.Question,
ButtonsType.YesNo,
"Do you really want to exit?");
ResponseType result = (ResponseType)md.Run();
md.Destroy();
if(result==ResponseType.Yes)
this.Destroy();
七,编译运行,在单击按钮的时候就会出现对话框问你是否确定退出。搞定
最后粘一下MyWindow.cs的代码
using System;
using Gtk;

public class MyWindow : Window
{
public MyWindow () : base ("MyWindow")
{
this.SetDefaultSize (400, 300);
this.DeleteEvent += new DeleteEventHandler (OnMyWindowDelete);
Button mybtn = new Button("Click me");
mybtn.Clicked+=new EventHandler (mybtn_click);
this.Add(mybtn);
this.ShowAll ();
}
void OnMyWindowDelete (object sender, DeleteEventArgs a)
{
Application.Quit ();
a.RetVal = true;
}
void mybtn_click(object sender,EventArgs args)
{
MessageDialog md = new MessageDialog((Window)this,
DialogFlags.DestroyWithParent,
MessageType.Question,
ButtonsType.YesNo,
"Do you really want to exit?");
ResponseType result = (ResponseType)md.Run();
md.Destroy();
if(result==ResponseType.Yes)
this.Destroy();
}
}
做为一个.net爱好者怎么可以不尝试一下mono呢?
于是apt安装mono,顺便赞一把debian
安装好debian以后,我写了一个简单的对话框试了试
一,用monoDevelop新建工程,我的名字是gtkTest,gtk# 2.0 Project。
二,编译运行已经出现了一个gnome的窗体。不过上面什么都没有
三, Main.cs是定义程序入口的,暂时我还没有用到他。
四,打开MyWindow.cs,首先在MyWindow的构造函数中添加一个Button。
Button mybtn = new Button("Click me");
把按钮加入窗体
this.Add(mybtn);
五,编译运行,可以看到在窗口中已经有了一个按钮,并且是充满怎个窗口的。这里和
windows是不一样的,一个窗口好象只能增加一个控件,比如说要在add一个Label
在编译时刻可以通过,但是运行时刻会有Warning。而且控件大小不可调。
六,添加单击事件处理函数
构造函数中增加单击事件
mybtn.Clicked+=new EventHandler (mybtn_click);
添加事件处理的函数
void mybtn_click(object sender,EventArgs args)
不要在里面直接用MessageBox.Show()这个函数是没有的。
看了一下Doc,发现有一个MessageDialog,估计应该是它了。
查看构造函数,MessageDialog(Window, DialogFlags, MessageType,
ButtonsType, string, params object[])
第一个是父窗口,第二个的意思是他的存在规则吧,我是这样理解的。
最后一个参数不知道什么意思,看他的例子也没有最后一个,我也没有写
根据example在事件处理的函数里面加上
MessageDialog md = new MessageDialog((Window)this,
DialogFlags.DestroyWithParent,
MessageType.Question,
ButtonsType.YesNo,
"Do you really want to exit?");
ResponseType result = (ResponseType)md.Run();
md.Destroy();
if(result==ResponseType.Yes)
this.Destroy();
七,编译运行,在单击按钮的时候就会出现对话框问你是否确定退出。搞定
最后粘一下MyWindow.cs的代码
using System;
using Gtk;
public class MyWindow : Window
{
public MyWindow () : base ("MyWindow")
{
this.SetDefaultSize (400, 300);
this.DeleteEvent += new DeleteEventHandler (OnMyWindowDelete);
Button mybtn = new Button("Click me");
mybtn.Clicked+=new EventHandler (mybtn_click);
this.Add(mybtn);
this.ShowAll ();
}
void OnMyWindowDelete (object sender, DeleteEventArgs a)
{
Application.Quit ();
a.RetVal = true;
}
void mybtn_click(object sender,EventArgs args)
{
MessageDialog md = new MessageDialog((Window)this,
DialogFlags.DestroyWithParent,
MessageType.Question,
ButtonsType.YesNo,
"Do you really want to exit?");
ResponseType result = (ResponseType)md.Run();
md.Destroy();
if(result==ResponseType.Yes)
this.Destroy();
}
}



浙公网安备 33010602011771号