C# IF-ELSE循环中的按钮单击事件
如果条件(“file.length()您不能将eventhandler放入IF语句中,但可以触发BUTTON CLICK,则我希望触发BUTTON_CLICK事件。请将IF语句修改为C# IF-ELSE循环中的按钮单击事件,c#,visual-studio-2010,c#-4.0,visual-studio-2012,C#,Visual Studio 2010,C# 4.0,Visual Studio 2012,如果条件(“file.length()您不能将eventhandler放入IF语句中,但可以触发BUTTON CLICK,则我希望触发BUTTON_CLICK事件。请将IF语句修改为 if(flag==1) { button1.PerformClick(); } 另外,所有抛出错误的代码都直接在类中,它们应该在方法中。请将代码修改为 private void CheckFile() { FileInfo info = new FileInfo("c:\\test.txt");
if(flag==1)
{
button1.PerformClick();
}
另外,所有抛出错误的代码都直接在类中,它们应该在方法中。请将代码修改为
private void CheckFile()
{
FileInfo info = new FileInfo("c:\\test.txt");
if (info.Length > 0)
flag=1;
if(flag==1)
{
button1.PerformClick();
}
}
然后,您可以在需要检查文件中数据大小是否大于0的任何位置调用
CheckFile();
。Method1
button1.PerformClick();
方法2
this.button1.Click += new EventHandler(button1_Click);
这个
这个密码呢
if(flag==1) //similar error for flag as for info
{
}
将引发编译时错误,这是类方法的代码,而不是类本身
.c#类基本上只能包含方法、属性、字段、事件、委托和嵌套类
所以你的班级应该是这样的:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += button1_Click;
}
private void button1_Click(object sender, EventArgs e)
{
FileInfo info = new FileInfo("c:\\test.txt");
if (info.Length > 0)
{
//Code for Redirection to New Form
}
}
}
不能将if-else语句放入类中,可以将其放入方法中。请尝试以下操作:
private void button1_Click(object sender, EventArgs e)
{
FileInfo info = new FileInfo("c:\\test.txt");
if (info.Length > 0) flag = 1;
if(flag==1)
{
//Code for Redirection to New Form
}
}
您的代码不可编译。原因如下:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private int flag;
FileSystemWatcher watcher = new FileSystemWatcher();
public Form1()
{
InitializeComponent();
watcher.Path = @"C:\";
watcher.Filter = "test.txt";
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
}
private void SetFlag()
{
FileInfo info = new FileInfo("c:\\test.txt");
if (info.Length > 0)
flag= 1;
}
private void CheckFlag()
{
if(flag==1)
{
button1.PerformClick();
}
}
private void button1_Click(object sender, EventArgs e)
{
//Code for Redirection to New Form
}
void watcher_Changed(object sender, FileSystemEventArgs e)
{
SetFlag();
CheckFlag();
}
}
}
现在您可以调用方法SetFlag()
来设置标志,并使用方法CheckFlag()
来检查标志。
在本例中,我使用FileSystemWatcher
捕获所有文件更改,并在事件Changed
的处理程序内调用SetFlag()
和CheckFlag()
您可以使用
button1\u单击来代替button1.PerformClick()
(此为EventArgs.Empty)
为什么你不能在按钮1_Click
中选中标志?我不是想说得太刺耳,但似乎你需要参考一些C#中经典编程的入门教程。我认为你试图做的事情是根本不可能的。也就是说,有其他方法来做上述事情,但你的谢谢你,克里斯托弗。是的,我是新手。当然,我会考虑你的输入。谢谢。这是非常有用的。我也这么做了。我创建了一个主方法,并尝试调用每一个方法如下::私人无效按钮1点击(对象发送者,EngEngsE){MeaseBox。文件长度>0“;}public static void main(String[]args){Form1 f=new Form1();f.SetFlag();f.CheckFlag();}但不知何故它不起作用。我没有收到消息框。我检查了文件,它工作正常。您确定文件“test.txt"不是空的?您确定为事件按钮1添加了处理程序吗?单击?有两种方法可以添加事件处理程序:1.使用表单设计器2.手动将此代码添加到表单1构造函数中:button1.Click+=button1\u Click;
现在您可以将带有消息框的代码放入方法button1\u Click
我在c中做了一些更改ode示例。您可以检查它。它现在应该可以正常工作了。您好,@KandarpJoshi,加载表单时会出现Load
事件。但我想您需要在表单加载完成后执行操作。您可以尝试将操作附加到Activate
事件,但这并不好,因为此事件将在每次加载后发生告诉我何时激活窗体。另一个决定是尝试使用计时器
。这将允许您周期性地执行操作。我在主函数中调用了“formObject.CheckFile();”方法,但该方法不起作用。按钮单击事件未触发。我还尝试了按钮单击调用的其他选项。
private void button1_Click(object sender, EventArgs e)
{
FileInfo info = new FileInfo("c:\\test.txt");
if (info.Length > 0) flag = 1;
if(flag==1)
{
//Code for Redirection to New Form
}
}
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private int flag;
FileSystemWatcher watcher = new FileSystemWatcher();
public Form1()
{
InitializeComponent();
watcher.Path = @"C:\";
watcher.Filter = "test.txt";
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
}
private void SetFlag()
{
FileInfo info = new FileInfo("c:\\test.txt");
if (info.Length > 0)
flag= 1;
}
private void CheckFlag()
{
if(flag==1)
{
button1.PerformClick();
}
}
private void button1_Click(object sender, EventArgs e)
{
//Code for Redirection to New Form
}
void watcher_Changed(object sender, FileSystemEventArgs e)
{
SetFlag();
CheckFlag();
}
}
}