如何用计时器触发 Text.TextChanged 事件
How to fire Text.TextChanged event with timer
我对路径进行了一些验证(文件是否存在于指定目录中),我需要在错误发生一段时间后启动 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");
之后的最后一个 else 中,我需要触发一个计时器等待大约 5 秒,然后再次触发 textChanged 事件。
这是可能的还是我需要采取另一种方法,例如启动一个消息框,要求再次检查文件并通过将路径存储在 var 上而不是更改文本来启动 TextChanged 事件 "manually"像这样的文本框 TexBoxNovoSvrc.Text = ""
而不是 TextBoxNovoSvrc.Text = OldPath.
您可以使用计时器:
在开头(textBoxNovoSvrc_TextChanged
之外),可能在构造函数中
Timer t = new Timer();
t.Interval = 5000;
t.Tick += textBoxNovoSvrc_TextChanged;
就在最后一个 return
之前
t.Start();
并且在 textBoxNovoSvrc_TextChanged
的开头:
if(t.Enabled){
t.Stop()
}
我对路径进行了一些验证(文件是否存在于指定目录中),我需要在错误发生一段时间后启动 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");
之后的最后一个 else 中,我需要触发一个计时器等待大约 5 秒,然后再次触发 textChanged 事件。
这是可能的还是我需要采取另一种方法,例如启动一个消息框,要求再次检查文件并通过将路径存储在 var 上而不是更改文本来启动 TextChanged 事件 "manually"像这样的文本框 TexBoxNovoSvrc.Text = ""
而不是 TextBoxNovoSvrc.Text = OldPath.
您可以使用计时器:
在开头(textBoxNovoSvrc_TextChanged
之外),可能在构造函数中
Timer t = new Timer();
t.Interval = 5000;
t.Tick += textBoxNovoSvrc_TextChanged;
就在最后一个 return
t.Start();
并且在 textBoxNovoSvrc_TextChanged
的开头:
if(t.Enabled){
t.Stop()
}