|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Prato
Messaggi: 1061
|
[C#] Gestire 4 checkbox
Ciao a tutti,
Sto creando, a scopo didattico, una piccola applicazione che mi fa partire le utility di sistema di windows senza ricorrere alla riga di comando. Ora volendo implementare il defrag, ho creato 4 checkbox dove dovrei selezionare gli argomenti da passare al comando defrag.exe. Ora, il problema e' che i checkbox posso essere selezionati coem uno preferisce (esempio verbose -v e full defrag -w) solo che non so come gestirli. Come faccio ad assegnare ad ogni check un valore da passare poi alla riga di comando? Io per ora sto procedendo a colpi di 'if' ma la soluzione non e' buona, infatti fa' un po quello che gli pare Vi posto il codice che per ora ho sviluppato. Codice:
// Defrag system
private void button2_Click(object sender, EventArgs e)
{
const string arg = "-a ";
const string drive = "c: ";
const string boot = "-b ";
const string verb = "-v ";
const string allvol = "-c ";
const string full = "-w ";
string command = "";
if (checkBox1.Checked)
{
command = (command + boot);
}
if (checkBox2.Checked)
{
command = (command + verb + arg);
}
if (checkBox3.Checked)
{
command = (command + allvol);
}
if (checkBox4.Checked)
{
command = (command + full);
}
Process.Start("defrag.exe ", command + drive);
}
__________________
Il mio colore preferito era il blu... Fino a quando non ho installato Windows... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2009
Messaggi: 609
|
Ciao!
Premesso che anch'io sono alle prime armi (anzi, primissime ) con C# e .NET, farei così:- utilizzo il controllo CheckedListBox al posto dei CheckBox; - utilizzo un comboBox; - creo un array rettangolare di tipo string dove metto tutti i comandi relativi al defrag; - creo un campo Command di tipo string (è quello da passare come argomento al metodo Start della classe Process); Ecco il codice: Codice:
public partial class Form1 : Form
{
static string Command;
static string[] drives = Environment.GetLogicalDrives();
static string[,] CommandArray = new string[3, 2] // [riga, colonna] aumenta la dimensione Riga se vuoi aggiungere altri comandi possibili
{
{"-v","Verbose Mode"},
{"-w","Full Defrag Mode"},
{"-b","Other command"}
};
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(drives);
for (int i = 0; i < CommandArray.GetLength(0); i++)
checkedListBox1.Items.Add(CommandArray[i, 1]);
}
private void button1_Click(object sender, EventArgs e)
{
Command= string.Empty;
if (comboBox1.text!=string.Empty)
{
for (int i = 0; i < CommandArray.GetLength(0); i++)
{
if (checkedListBox1.CheckedItems.Contains(CommandArray[i, 1]))
Command = Command + " " + CommandArray[i, 0];
}
Process.Start("defrag.exe ", command + " " + comboBox1.Text);
}
else MessageBox.Show("Devi selezionare un drive da deframmentare.");
}
}
Ultima modifica di alex783 : 19-04-2009 alle 16:10. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Prato
Messaggi: 1061
|
Grazie per il suggerimento, provo subito.
Edit: Ho provato e funge alla grande! Grazie ancora
__________________
Il mio colore preferito era il blu... Fino a quando non ho installato Windows... Ultima modifica di mcardini : 19-04-2009 alle 16:40. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:30.











) con C# e .NET, farei così:








