我对路径做了一些验证(如果文件存在或不存在于指定的目录中),我需要在错误发生一段时间之后启动TextChangedEvent以再次检查该文件。 这是我用来检查此错误的代码:
private void textBoxNovoSvrc_TextChanged(object sender, EventArgs e)
{
First++;
bool ok = false;
int same = 0;
try
{
if (!String.IsNullOrWhiteSpace(textBoxNovoSvrc.Text) && Program.Funcoes.ExisteDirectoria(textBoxNovoSvrc.Text) == true)
{
if (Erro2 == -1 || Erro2 == 0)
same = TextBoxSame(First);
if (same == 1)
return;
if (Global.VersaoInvalidaCli == true && Global.VersaoInvalidaSvrc == true)
{
Global.SvrcChanged = true;
buttonContinuar.PerformClick();
}
if (Program.Funcoes.ExisteFicheiro(textBoxNovoSvrc.Text + @"\OrcaService.exe.config") == true)
{
if (Global.VersaoInvalidaCli == true && Global.VersaoInvalidaSvrc == true)
{
buttonContinuar.PerformClick();
epDoesntExist1.Dispose();
epInvalidVersionSvrc.SetError(textBoxNovoSvrc, "Versão de Update Inválida!");
epInvalidVersionSvrc.Dispose();
epInvalidVersionCli.Dispose();
textBoxNovoCli.Text = Directory.GetParent(textBoxNovoSvrc.Text) + @"\Orca";
return;
}
if (textBox1 == textBoxNovoSvrc.Name || textBox2 == textBoxNovoSvrc.Name)
{
TextBoxes(textBox1, textBox2, true);
}
//Colocar aqui a versão mais recente do update;
string path = Directory.GetParent(textBoxNovoSvrc.Text).ToString();
//string Nome = System.IO.Path.GetFileName(path);
labelNovaVersãoServ.Text = Program.Funcoes.NovaVersao(path, Global.versionError);
Erro2 = 0;
ok = true;
errorProviderNoSvrc.Dispose();
epInvalidVersionSvrc.Dispose();
epDoesntExist2.Dispose();
Global.NovoServiço = textBoxNovoSvrc.Text;
textBoxNovoSvrc.BackColor = System.Drawing.Color.Green;
Continue++;
if (Continue >= 4)
buttonContinuar.Enabled = true;
else
{
buttonContinuar.Enabled = false;
}
btnBrowse2.Enabled = true;
textBoxNovoCli.Enabled = true;
textBoxNovoCli.Text = "";
textBoxNovoCli.Text = Directory.GetParent(textBoxNovoSvrc.Text).ToString() + @"\Orca";
}
else
{
ok = false;
textBoxNovoSvrc.BackColor = System.Drawing.Color.Red;
buttonContinuar.Enabled = false;
Erro2 = 1;
textBoxNovoSvrc.Focus();
epDoesntExist2.Dispose();
epInvalidVersionSvrc.Dispose();
errorProviderNoSvrc.SetError(textBoxNovoSvrc, "Ficheiro \"OrcaService.exe.config\" não existe na directoria");
return;
}
在errorProviderNoSvrc.SetError(textBoxNovoSvrc, "Ficheiro \"OrcaService.exe.config\" não existe na directoria");
之后的最后一个,我需要触发一个计时器等待大约5秒钟再次启动textChanged事件。
这是可能做的还是我需要采取另一种方法,例如启动一个消息框,要求再次检查文件,并通过在var上存储路径而不是“查看”文本来“手动”启动TextChanged事件像TexBoxNovoSvrc.Text = ""
和TextBoxNovoSvrc.Text = OldPath.
答案 0 :(得分:1)
您可以使用计时器:
在开头(textBoxNovoSvrc_TextChanged
之外),也许在构造函数
Timer t = new Timer();
t.Interval = 5000;
t.Tick += textBoxNovoSvrc_TextChanged;
在最后return
t.Start();
在textBoxNovoSvrc_TextChanged
的开头:
if(t.Enabled){
t.Stop()
}