热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在gnome下用C#开发一个简单的窗口

终于发现ATI的显卡驱动可以用了,于是可以不再忍受800*600的分辨率了做为一个.net爱好者怎么可以不尝试一下mono呢?于是apt安装mono,顺便赞一把debian安装好debian以后,我
终于发现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 (400300);
        
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();
    }

}
 

推荐阅读
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 本文通过基准测试(Benchmark)对.NET Core环境下Thrift和HTTP客户端的微服务通信性能进行对比分析。基准测试是一种评估系统或组件性能的方法,通过运行一系列标准化的测试来衡量其表现。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
  • 解决Unreal Engine中UMG按钮长时间按住自动释放的问题
    本文探讨了在Unreal Engine中使用UMG按钮时,长时间按住按钮会导致自动释放的问题,并提供了详细的解决方案。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • C# 实现可浮动工具栏功能
    本文介绍如何在 C# 中实现一个可浮动的工具栏,即工具栏可以从其初始位置拖出,并且可以重新拖回原位。通过创建一个新的窗口作为工具栏的容器,并利用 .NET Framework 提供的 ToolStrip 控件,可以轻松实现这一功能。 ... [详细]
  • 本地存储组件实现对IE低版本浏览器的兼容性支持 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在C#编程中,`List`集合提供了多种方法来高效地查找满足特定条件的元素。虽然`FirstOrDefault`方法常用于查找集合中第一个符合条件的对象,并在未找到时返回默认值,但若需要查找最后一个符合条件的元素,则可以使用`LastOrDefault`方法。该方法同样支持未找到匹配项时返回默认值,从而提供更加灵活的查询选项。此外,`LastOrDefault`方法在处理大量数据时依然保持高效的性能,适用于各种复杂场景。 ... [详细]
author-avatar
LA_Lam霸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有