我目前正在做我的家庭作业分配计划:)一切都很好,直到我坚持这个问题一段时间,我不明白为什么它不工作。总之我需要启用(如果文件存在)或者禁用某个动态按钮。我使用FileSystemWatcher和定时器来检查女巫中的某个文件夹.txt文件正在由另一个Windows应用程序窗体创建。所以我想启用按钮,如果某些文件出现在文件夹上,但我的代码不起作用。有人可以说为什么我的代码不工作或问题可能隐藏的地方?功能启用和禁用动态按钮(FileSystemWatcher)
namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string[] stalnr = {"Stanliukas Nr.1","Staliukai Nr.2","Staliukai Nr.3","Staliukai Nr.4","Staliukai Nr.5","Staliukai Nr.6","Staliukai Nr.7","Staliukai Nr.8","Staliukai Nr.9","Staliukai Nr.10"};
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
Button[] staliukai = new Button[10];
string dir = @"C:\Users\Roberto\Documents\Visual Studio 2013\Projects\WindowsFormsApplication6\WindowsFormsApplication6\Uzsakymai\";
string flnm;
string fldir;
int StalID;
string[] staliukas = { "StaliukasNr1.txt", "StaliukasNr2.txt", "StaliukasNr3.txt", "StaliukasNr4.txt", "StaliukasNr5.txt", "StaliukasNr6.txt", "StaliukasNr7.txt", "StaliukasNr8.txt", "StaliukasNr9.txt", "StaliukasNr10.txt" };
private void Form1_Load(object sender, EventArgs e)
{
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
button8.Enabled = false;
button9.Enabled = false;
button10.Enabled = false;
//Creating dynamical buttons
for (int i = 0; i < 10; i++)
{
flnm = staliukas[i];
fldir = dir + flnm;
staliukai[i] = new Button();
staliukai[i].Text = stalnr[i];
staliukai[i].Height = 40;
staliukai[i].Width = 100;
staliukai[i].Location = new Point(20, 50 * i + 55);
staliukai[i].Parent = panel1;
// First check if there is some files in folder
if (!File.Exists(fldir))
{
staliukai[i].Enabled = false;
}
else
{
staliukai[i].Enabled = true;
}
staliukai[i].Click += staliukai_Click;
staliukai[i].Tag = i;
}
panel1.AutoScroll = true;
}
/*Watcher should check for changes in certain folder for file changes and new file creation and use the function to enable button*/
private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e)
{
timer1.Enabled = true;
patikrinimas();
}
private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)
{
timer1.Enabled = true;
patikrinimas();
}
/*Function for checking if file exists*/
void patikrinimas()
{
for (int i = 0; i < 10; i++)
{
Button temp = staliukai[i];
flnm = staliukas[i];
fldir = dir + flnm;
if (!File.Exists(fldir))
{
temp.Enabled = false;
}
else
{
temp.Enabled = true;
}
}
}
staliukai_Click函数在哪里? –
_code无法正常工作'_对您的问题描述不够!它如何“不起作用”?什么都没发生发生错误的事情? FSWatcher是否曾经标记过任何更改?为什么一个计时器当你有一个观察者?另外:你没有在你的代码中选择非英文名称来帮助任何人。它真的很难说什么应该是什么或做什么..也尝试格式化问题,以便不需要HScrollbars .. – TaW
Angus Chung:尚未使用,但它有其他目的,可以从文件中添加信息。 TaW:对于我不习惯在论坛寻求帮助的问题形成的抱歉,我会更好地尝试,并在下一次将所有内容都改为英文。 FSWatcher从工具箱添加,并定向到某个文件夹,定时器应该每隔1秒刷新一次观察者。问题是,当我在程序运行时在文件夹中添加一个文件时,它不启用按钮,只有在运行应用程序之前将文件放入文件夹时才起作用。 –