C# chiudere form

sabato 17 aprile 2010 - 20.37

fixed Profilo | Junior Member

ciao a tutti,
ho un form e dopo aver cliccato su un bottone apro una finestra di dialogo
per selezionare dei file e dopo che seleziono i file voglio chiudere il form.
ma non funziona

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
CopyClipboard a = new CopyClipboard();
string NomeFile = openFileDialog1.SafeFileName;
Clipboard.SetDataObject(NomeFile);
a.Hide();

}

kataklisma Profilo | Senior Member

>ciao a tutti,
Ciao!

>ho un form e dopo aver cliccato su un bottone apro una finestra
>di dialogo
>per selezionare dei file e dopo che seleziono i file voglio chiudere
>il form.
>ma non funziona
>
>if (openFileDialog1.ShowDialog() == DialogResult.OK)
> {
> CopyClipboard a = new CopyClipboard();
>string NomeFile = openFileDialog1.SafeFileName;
> Clipboard.SetDataObject(NomeFile);
> a.Hide();
>
> }

Con il metodo Hide il form lo nascondi, non lo chiudi :)

Per chiudere il form devi utilizzare il metodo Close().

Ciao :)


------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

fixed Profilo | Junior Member

ciao,
ho provato col metodo close ma non funziona ancora

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
CopyClipboard a = new CopyClipboard();
string NomeFile = openFileDialog1.SafeFileName;
Clipboard.SetDataObject(NomeFile);
a.Close();

}

kataklisma Profilo | Senior Member

>ciao,
>ho provato col metodo close ma non funziona ancora
>
>if (openFileDialog1.ShowDialog() == DialogResult.OK)
> {
> CopyClipboard a = new CopyClipboard();
>string NomeFile = openFileDialog1.SafeFileName;
> Clipboard.SetDataObject(NomeFile);
> a.Close();
>
> }

Puoi spiegare nel dettagli che succede?E' un po strano quello che dici :)

Se alleghi il codice o meglio il progetto lo testo!

;)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

fixed Profilo | Junior Member

:) il codice è solo questo di seguito.
io apro una finestra di dialogo, selezioni i nomi di N file e con la classe clipboard li memorizzo, e subito vorrei che si chiudesse il form.
ora ho scoperto di avere due problemi:
1. chiudere il form
2. se passo una lista di file non li memorizza per copiarli

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections.Specialized;

namespace Utility
{
public partial class CopyClipboard : Form
{
public CopyClipboard()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{

StringCollection paths = new StringCollection();

string[] nomifile = openFileDialog1.FileNames;

foreach (string sFile in nomifile)
{
paths.Add(sFile.ToString());
}

Clipboard.SetFileDropList(paths);
}
}
}
}

fixed Profilo | Junior Member

mi sa che è sbagliato metodo. i voglio copiare solo il nome dei file e non il file.

fixed Profilo | Junior Member

ciao scusa per la confusione. l codice dovrebber essere questo.
pero non copia nulla negli appunti.

ti allego progetto.

la parte di cui parlo e quella relariva a copiaClipboard

kataklisma Profilo | Senior Member

>ciao scusa per la confusione.
Tranquillo :)

> l codice dovrebber essere questo.
>pero non copia nulla negli appunti.
>
>ti allego progetto.
>
>la parte di cui parlo e quella relariva a copiaClipboard

L'errore sta nel fatto di utilizzare il metodo Close sull'istanza di CopyClipboard a e non sull'istanza corrente! Quindi dovresti usare la parola chiave this : this.close()

Ecco la routine con la correzione riguardante il tuo problema :

private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { List<String> listaFile = new List<string>(); string[] nomifile = openFileDialog1.FileNames; foreach (string sFile in nomifile) { listaFile.Add(sFile.ToString()); } Clipboard.SetDataObject(listaFile); this.Close(); } }


Ciao ;)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

fixed Profilo | Junior Member

ok, grazie mille
ora funziona

kataklisma Profilo | Senior Member

>ok, grazie mille
>ora funziona

;) Di niente!

Comunque dai un'occhiatina a quel codice, ho visto parecchie linee inutili :) pero non ti dico niente eh!

Ciao ;) Buon coding!
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

fixed Profilo | Junior Member

ciao sto analizzando i mieri errori :)

vorrei avere
c:....\file1
c:....\file2
c:....\file3

invece ottengo
vorrei avere
c:....\file1c:....\file2c:....\file3

ho trovato su internet questo parte di codice che funziona

listaFile = string.Format("{0}\n{1}", listaFile, sFile);

ma non ho capito a cosa servono {0} e soprattutto {1}

continuo a postare qui, se devo aprie un altro post dimmelo.

ciao
Grazie

kataklisma Profilo | Senior Member

>ciao sto analizzando i mieri errori :)
Ciao! Bravo, ora sei un vero coder

>vorrei avere
>c:....\file1
>c:....\file2
>c:....\file3
>
>invece ottengo
>vorrei avere
>c:....\file1c:....\file2c:....\file3
>
>ho trovato su internet questo parte di codice che funziona
>
>listaFile = string.Format("{0}\n{1}", listaFile, sFile);
>
>ma non ho capito a cosa servono {0} e soprattutto {1}

Quelli sono semplicemente argomenti che vengono sostituiti in quel caso da listaFile e sFile, il numeretto all'interno indica il parametro da visualizzare, se provi ad utilizzare la format in questo modo :

listaFile = string.Format("{1}\n{0}", listaFile, sFile);

otterresti una stringa in questo formato : stringasFile
stringalistaFile

...esempio :

string Nome = "Ignazio"; string Cognome = "Catanzaro"; Console.WriteLine("{0} {1}",Nome,Cognome);

darà in output : "Ignazio Catanzaro".

>continuo a postare qui, se devo aprie un altro post dimmelo.
No, apri un'ulteriore thread se il problema non è pertinente all'argomento per cui il thread corrente è nato.

>ciao
Ciao :)

>Grazie
Di niente!
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

fixed Profilo | Junior Member

:) ok capito bene.
grazie per il supporto.

una domanda: è possibile aprire la openFileDialog1 direttamente cliccando su un nodo
invece che aprie prima un form?

grazies

kataklisma Profilo | Senior Member

>:) ok capito bene.
>grazie per il supporto.
Di niente!

>una domanda: è possibile aprire la openFileDialog1 direttamente
>cliccando su un nodo
>invece che aprie prima un form?

Sono stati creati sistemi software che monitorano lo stato degli shuttle in volo, gestionali capaci di gestire tutto cio che un'azienda richiede....ma far apparire una dialogbox al click sul nodo di una treeview è troppo per l'umanità ovviamente scherzo,

dai un'occhiata alla mia prima risposta in questo thread ;) http://www.dotnethell.it/forum/messages.aspx?ThreadID=34989

>grazies
Di niente...

P.S non vorrei essere ripetitivo ma è meglio che apri un nuovo thread per nuovi quesiti, cosi faciliti di molto la ricerca nei forum e la pulizia degli stessi.... :)
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

fixed Profilo | Junior Member

OK scusami al prossimo ne apro uno nuovo.
ma nel link che mi hai postato è una mia vecchia richiesta?
non ho capito come si può fare

Cavaliere_Nero Profilo | Newbie

p

kataklisma Profilo | Senior Member

>OK scusami al prossimo ne apro uno nuovo.
>ma nel link che mi hai postato è una mia vecchia richiesta?
>non ho capito come si può fare

Si è una tua vecchia richiesta, beh se vedi bene al click su un nodo appare una messagebox, non devi far altro che inserire al posto di messagebox.show le operazioni che vuoi eseguire!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5