Xamarin-Studio中自定义小部件的问题(使用Mono / C#/ Gtk#)

时间:2014-10-29 10:20:06

标签: c# mono gtk# xamarin-studio

我在Xamarin-Studio中使用自定义Widget时遇到问题,我使用Mono,C#和Gtk#。 它应该显示2个图像和2个标签,应该像按钮一样工作,应该是可隐藏的。 这是我的代码:

using System;
using GLib;
using Gtk;
using System.Runtime.InteropServices;

namespace myProgram_V1
    {
    [System.ComponentModel.ToolboxItem (true)]
    public partial class myWidget : Gtk.Bin
    {
        public myWidget ()
        {
            this.Build ();
            HeightRequest = 128;
        }

        public void setHeight (int height)
        {
            HeightRequest = height;
        }

        public void setLabel1 (String text)
        {
            label1.Text = text;
        }

        public void setLabel2 (String text)
        {
            label2.Text = text;
        }

        public void setImage1 (String image)
        {
            image1.Pixbuf = new Gdk.Pixbuf (image);
        }

        public void setImage2 (String image)
        {
            image2.Pixbuf = new Gdk.Pixbuf (image);
        }

        [Signal ("clicked")]
        public event EventHandler Clicked {
            add {
                Signal signal = Signal.Lookup (this, "clicked");
                signal.AddDelegate (value);
            }
            remove {
                Signal signal = Signal.Lookup (this, "clicked");
                signal.RemoveDelegate (value);
            }
        }
    }
}

如果我在这样的其他小部件/窗口的GUI-Designer中使用这个小部件,它可以被Designer识别,我可以在属性中设置Clickevent,但如果我运行程序,我会得到

(myProgram_V1:914): GLib-GObject-WARNING **: gsignal.c:2375: signal `clicked' is invalid for instance `0x7a9c9980' of type `__gtksharp_2_myProgram+5fV1_myWidget'

并且无法点击。

但是如果我让它继承Gtk.Button而不是Gtk.Bin这个小部件不能用于Designer,但它可以在运行时使用,如果我事先设置click事件,有时候,在构建或编译期间, GUI-Designer将自动生成的文件中的所有global :: myProgram_V1.myWidget条目替换为void,不再有任何工作。

此外,.Hide()将无法使用此小部件,“隐藏”此小部件的唯一选项是使用.Destroy()。

提前感谢您的帮助。

0 个答案:

没有答案