Mënyra se si shumica e programuesve .net do ta bënin këtë është:
- Lëreni të gjithë kodin tuaj brenda
MainForm.cs
, por deklaroni një metodë të re për ndarjen e kodit që bën pastrimin.
Unë gjithmonë lë në metodën e menaxhimit të ngjarjeve (ajo që VS gjeneron kur klikoni dy herë butonin) kodin për të ndryshuar kursorin e miut (në rast se kodi që po telefonoj kërkon disa sekonda ose më shumë për t'u ekzekutuar) dhe për t'i kapur të gjitha të patrajtuara përjashtime dhe vendos logjikën time në një metodë të veçantë private:
partial class MainForm : Form // this is MainForm.cs
{
// This is the method VS generates when you double-click the button
private void clearButton_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
try
{
ClearForm();
}
catch(Exception ex)
{
// ... have here code to log the exception to a file
// and/or showing a message box to the user
}
finally
{
this.Cursor = Cursors.Default;
}
}
private void ClearForm()
{
// clear all your controls here
myTextBox.Clear();
myComboBox.SelectedIndex = 0;
// etc...
}
}
Sipas mendimit tim, nëse doni të ndiqni mënyrën konvencionale të të bërit të gjërave në .net, duhet t'i përmbaheni këtij shembulli të parë.
Rekomandohet zhvendosja e kodit jashtë skedarëve .cs kur kodi nuk është pjesë e logjikës së formularit, për shembull, kodi i hyrjes në të dhënat ose logjika e biznesit. Në këtë rast nuk mendoj se pastrimi i kontrolleve të formularit kualifikohet si logjikë biznesi. Është vetëm një pjesë e kodit të formularit dhe duhet të qëndrojë në MainForm.cs
.
Por nëse vërtet dëshironi të vendosni metodën ClearForm
në një skedar tjetër .cs, mund të krijoni një klasë të re dhe të zhvendosni metodën ClearForm
atje. Do t'ju duhet gjithashtu të ndryshoni veçorinë Modifiers të çdo kontrolli në Publik, në mënyrë që klasa juaj e re të ketë qasje në to nga jashtë MainForm. Diçka si kjo:
public class FormCleaner // this is FormCleaner.cs
{
public void ClearForm(MainForm form)
{
// clear all your controls here
form.myTextBox.Clear();
form.myComboBox.SelectedIndex = 0;
// etc...
}
}
Ju do të duhet të ndryshoni kodin kryesor të formës në:
partial class MainForm : Form // this is MainForm.cs
{
// This is the method VS generates when you double-click the button
private void clearButton_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
try
{
FormCleaner cleaner = new FormCleaner();
cleaner.ClearForm(this);
}
catch(Exception ex)
{
// ... have here code to log the exception to a file
// and/or showing a message box to the user
}
finally
{
this.Cursor = Cursors.Default;
}
}
}
Por vini re se klasa juaj FormCleaner
duhet të dijë për klasën tuaj MainForm
në mënyrë që të dijë se si të pastrojë secilën nga kontrollet e formularit, ose do t'ju duhet të gjeni një algoritëm të përgjithshëm që është në gjendje të qarkullojë përmes koleksionit Controls
të çdo formë për t'i pastruar ato:
public class FormCleaner // this is FormCleaner.cs
{
// 'generic' form cleaner
public void ClearForm(Form form)
{
foreach(Control control on form.Controls)
{
// this will probably not work ok, because also
// static controls like Labels will have their text removed.
control.Text = "";
}
}
}
Dhe siç kanë thënë të tjerët, MainForm.Designer.cs
është krijuar nga makineritë dhe nuk duhet të vendosni kurrë kodin tuaj atje.
21.02.2009