原文: http://zetcode.com/gui/gtksharp/firststeps/

在 GTK# 编程教程的这一部分中,我们将进行编程的第一步。 我们将创建简单的程序。

简单的例子

第一个代码示例是一个简单的示例,它显示了居中的窗口。

center.cs

  1. using Gtk;
  2. class SharpApp : Window {
  3. public SharpApp() : base("Center")
  4. {
  5. SetDefaultSize(250, 200);
  6. SetPosition(WindowPosition.Center);
  7. DeleteEvent += delegate { Application.Quit(); };
  8. Show();
  9. }
  10. public static void Main()
  11. {
  12. Application.Init();
  13. new SharpApp();
  14. Application.Run();
  15. }
  16. }

该代码示例在屏幕中央显示一个小窗口。

  1. $ gmcs -pkg:gtk-sharp-2.0 center.cs

这是我们编译代码示例的方式。

  1. using Gtk;

现在,我们可以直接使用Gtk名称空间中的对象。 我们可以写Window而不是Gtk.Window

  1. class SharpApp : Window {

我们的应用基于SharpApp类。 该类继承自Window类。

  1. public SharpApp() : base("Center")
  2. {
  3. ...
  4. }

这是构造器。 它构建了我们的应用。 它还通过base()关键字调用其父构造器。

  1. SetDefaultSize(250, 200);

这行为我们的窗口设置默认大小。

  1. SetPosition(WindowPosition.Center);

这条线使窗口在屏幕上居中。

  1. DeleteEvent += delegate { Application.Quit(); };

我们将一个代理插入DeleteEvent。 当我们单击标题栏中的关闭按钮时,将触发此事件。 或按 Alt + F4 。 我们的代表永久退出了申请。

  1. Show();

现在我们显示窗口。 在调用Show()方法之前,该窗口不可见。

  1. public static void Main()
  2. {
  3. Application.Init();
  4. new SharpApp();
  5. Application.Run();
  6. }

Main()方法是应用的入口点。 它启动并运行程序。

图标

在下一个示例中,我们显示应用图标。 大多数窗口管理器在标题栏的左上角以及任务栏上都显示图标。

icon.cs

  1. using Gtk;
  2. using System;
  3. class SharpApp : Window {
  4. public SharpApp() : base("Icon")
  5. {
  6. SetDefaultSize(250, 160);
  7. SetPosition(WindowPosition.Center);
  8. SetIconFromFile("web.png");
  9. DeleteEvent += new DeleteEventHandler(OnDelete);
  10. Show();
  11. }
  12. public static void Main()
  13. {
  14. Application.Init();
  15. new SharpApp();
  16. Application.Run();
  17. }
  18. void OnDelete(object obj, DeleteEventArgs args)
  19. {
  20. Application.Quit();
  21. }
  22. }

该代码示例显示了应用图标。

  1. SetIconFromFile("web.png");

SetIconFromFile()方法为窗口设置图标。 从当前工作目录中的磁盘加载映像。

  1. DeleteEvent += new DeleteEventHandler(OnDelete);

这是另一种方式,我们如何将事件处理器插入事件。 只是有点冗长。

  1. void OnDelete(object obj, DeleteEventArgs args)
  2. {
  3. Application.Quit();
  4. }

这是删除事件的事件处理器。

GTK 的第一步 - 图1

图:图标

按钮

在下一个示例中,我们将使用 GTK# 库进一步增强我们的编程技能。

buttons.cs

  1. using Gtk;
  2. class SharpApp : Window
  3. {
  4. public SharpApp() : base("Buttons")
  5. {
  6. SetDefaultSize(250, 200);
  7. SetPosition(WindowPosition.Center);
  8. DeleteEvent += delegate { Application.Quit(); };
  9. Fixed fix = new Fixed();
  10. Button btn1 = new Button("Button");
  11. btn1.Sensitive = false;
  12. Button btn2 = new Button("Button");
  13. Button btn3 = new Button(Stock.Close);
  14. Button btn4 = new Button("Button");
  15. btn4.SetSizeRequest(80, 40);
  16. fix.Put(btn1, 20, 30);
  17. fix.Put(btn2, 100, 30);
  18. fix.Put(btn3, 20, 80);
  19. fix.Put(btn4, 100, 80);
  20. Add(fix);
  21. ShowAll();
  22. }
  23. public static void Main()
  24. {
  25. Application.Init();
  26. new SharpApp();
  27. Application.Run();
  28. }
  29. }

我们在窗口上显示四个不同的按钮。 我们将看到容器窗口小部件和子窗口小部件之间的区别,并将更改子窗口小部件的某些属性。

  1. Fixed fix = new Fixed();

Fixed小部件是不可见的容器小部件。 其目的是包含其他子窗口小部件。

  1. Button btn1 = new Button("Button");

Button是子窗口小部件。 子窗口小部件放置在容器内。

  1. btn1.Sensitive = false;

我们使此按钮不敏感。 这意味着我们无法单击它。 图形化的小部件为灰色。

  1. Button btn3 = new Button(Stock.Close);

第三个按钮在其区域内显示图像。 GTK# 库具有我们可以使用的内置图像库。

  1. btn4.SetSizeRequest(80, 40);

在这里,我们更改按钮的大小。

  1. fix.Put(btn1, 20, 30);
  2. fix.Put(btn2, 100, 30);
  3. ...

在这里,我们将按钮小部件放置在固定容器小部件内。

  1. Add(fix);

我们将Fixed容器设置为Window小部件的主要容器。

  1. ShowAll();

我们可以调用ShowAll()方法,也可以在每个小部件上调用Show()方法。 包括容器。

GTK 的第一步 - 图2

图:按钮

在本章中,我们在 GTK# 编程库中创建了第一个程序。