Gå til innhold

C#: dobbel respons på eventer C#/glade/gtk/mono


Anbefalte innlegg

har problemer med en test jeg lager i C# under mono. bruker gtk og glade.

 

problemet er at når man klikker på en knapp, så sendes eventet to ganger. to openfile-dialoger kommer opp. hvorfor??

 

kan legge opp glade-fila også, om det hjelper noe. alt den gjør er å definere utseende, og sende Click-event på knappen.

 

 

// project created on 3/8/2006 at 9:05 PM
using System;
using Gtk;
using Glade;
using GLib;

public class GladeApp
{
[Widget]Window frmMain;
[Widget]Gtk.FileChooserDialog dialog;
[Widget]Button btnSource;
[Widget]Button btnTarget;
[Widget]Entry txtSource;
[Widget]Entry txtTarget;

public static void Main (string[] args)
{
 try
 {
 	new GladeApp (args);
 }
 catch (Glade.HandlerNotFoundException err)
 {
 	Console.WriteLine("err: " + err.Message);
 }
}

public GladeApp (string[] args) 
{
 Application.Init ();

 Glade.XML gxml = new Glade.XML (null, "gui.glade", "frmMain", null);
 gxml.Autoconnect (this);
 
 //events
 frmMain.DeleteEvent+=new DeleteEventHandler(OnWindowDeleteEvent);
 btnSource.Clicked+=new EventHandler(on_btnSource_clicked);
 btnTarget.Clicked+=new EventHandler(on_btnTarget_clicked);
 
 Application.Run ();
}

private void OnWindowDeleteEvent (object sender, DeleteEventArgs a) 
{
 Application.Quit ();
 a.RetVal = true;
}

private void on_btnSource_clicked (object sender, EventArgs a) 
{
 dialog = new FileChooserDialog ("Please choose a folder", this.frmMain,
 	FileChooserAction.SelectFolder, Stock.Cancel, ResponseType.Cancel, Stock.Open,
 	ResponseType.Ok);

 //events
 dialog.ButtonReleaseEvent+=
 	new ButtonReleaseEventHandler(on_filechooserSource_response);
 dialog.Show();

 Console.WriteLine("filechooser loaded");
}

private void on_btnTarget_clicked (object sender, EventArgs a) 
{
 dialog = new FileChooserDialog ("Please choose a folder", this.frmMain,
 	FileChooserAction.SelectFolder, Stock.Cancel, ResponseType.Cancel, Stock.Open,
 	ResponseType.Ok);

 //events
 dialog.ButtonReleaseEvent+=
 	new ButtonReleaseEventHandler(on_filechooserTarget_response);
 dialog.Show();

 Console.WriteLine("filechooser loaded");
}

private void on_filechooserSource_response (object sender, EventArgs a) 
{
 Console.WriteLine("response "+
 	((Gtk.FileChooserDialog)(sender)).Filename.ToString()
 	);
 txtSource.Text = ((Gtk.FileChooserDialog)(sender)).Filename.ToString();
 dialog.Hide();
}

private void on_filechooserTarget_response (object sender, EventArgs a) 
{
 Console.WriteLine("response "+
 	((Gtk.FileChooserDialog)(sender)).Filename.ToString()
 	);
 txtTarget.Text = ((Gtk.FileChooserDialog)(sender)).Filename.ToString();
 dialog.Hide();
}
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...