2
我遇到了Gtk.RadioButton
小部件的Clicked
事件。 下面是示例代碼:單聲道gtk.RadioButton點擊事件發射兩次
using System;
using Gtk;
public partial class MainWindow: Gtk.Window
{
public MainWindow(): base (Gtk.WindowType.Toplevel)
{
Build();
RadioButton rbt1 = new RadioButton (null, "rbt1");
RadioButton rbt2 = new RadioButton (rbt1, "rbt2");
RadioButton rbt3 = new RadioButton (rbt1, "rbt3");
VBox vbx1 = new VBox();
vbx1.PackStart (rbt1, false, false, 0);
vbx1.PackStart (rbt2, false, false, 0);
vbx1.PackStart (rbt3, false, false, 0);
this.Add (vbx1);
this.ShowAll();
rbt1.Clicked+= HandleClicked;
rbt2.Clicked+= HandleClicked1;
rbt3.Clicked+= HandleClicked2;
}
void HandleClicked2 (object sender, EventArgs e)
{
Console.WriteLine ("rbt3.Clicked");
}
void HandleClicked1 (object sender, EventArgs e)
{
Console.WriteLine ("rbt2.Clicked");
}
void HandleClicked (object sender, EventArgs e)
{
Console.WriteLine ("rbt1.Clicked");
}
}
的問題是:
當我點擊rbt2,輸出爲:
rbt1.Clicked
rbt2.Clicked
當我點擊rbt3時,輸出是:
rbt2.Clicked
rbt3.Clicked
當我點擊rbt1,輸出爲:
rbt3.Clicked
rbt1.Clicked
但我期望的是,當我點擊rbt *時,唯一的輸出是「rbt * .Clicked」。
嗨,ptomato謝謝你的幫助。我測試Toggled信號作爲你的代碼,它的工作原理。我也測試點擊信號,但添加了「如果((發件人爲RadionButton).Active)」條件。它也適用於我以前的代碼。 –