0

私はGTK#(そしてそのことについてはデスクトップ開発)に不慣れであり、単純な作業のように見えるものを理解することはできません。:(

単純な日付ピッカーを機能させることができません。1つのテキストボックスエントリと1つのボタンがあるメインウィンドウがあります。ボタンをクリックすると、カレンダーウィジェットを含む新しいウィンドウが開き、ユーザーが日付をダブルクリックすると、選択した日付がメインウィンドウのテキストボックスエントリに戻るはずです。

これが私のコードです、何が欠けていますか?

MainWindow.cs

using System;
using Gtk;

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;
    }

    private DateTest1.CalendarTest datePicker;

    protected void OnButton1Clicked (object sender, EventArgs e)
    {
        datePicker = new DateTest1.CalendarTest();
        datePicker.DestroyEvent += new DestroyEventHandler(datePickerDestroyed); 
        datePicker.ShowAll(); 
    }

    public void datePickerDestroyed(object sender, EventArgs e)
    { 
        entry1.Text = datePicker.DatePicked.ToString();
    } 
}

CalendarTest.cs

using System;

namespace DateTest1
{
    public partial class CalendarTest : Gtk.Window
    {
        public DateTime DatePicked;

        public CalendarTest () : 
                base(Gtk.WindowType.Toplevel)
        {
            this.Build ();
        }

        protected void OnCalendar1DaySelectedDoubleClick (object sender, EventArgs e)
        {
            var datePicker = (Gtk.Calendar)sender;
            DatePicked = datePicker.Date;
            this.Destroy();
        }
    }
}
4

1 に答える 1

1

Destroyed;)ではなく、イベントを使用する必要がありDestroyEventます。つまり、これを使用します。 datePicker.Destroyed += new EventHandler(datePickerDestroyed);

この質問も参照してください。

于 2012-12-09T23:15:46.210 に答える