Я потерян. Я хочу удалить значение из текстового файла. Значение - это checkbox.Name. Я хочу открыть текстовый файл, найти соответствующее имя пользователя в текстовом файле, удалить его и сохранить файл на основе нажатия кнопки.C# Удалить динамически созданный флажок на основе нажатия кнопки
Вот как я получаю checkbox.Name
public static void getPermText(System.Windows.Forms.Form targetForm)
{
Stream fileStream = File.Open(dataFolder + PermFile, FileMode.Open);
StreamReader reader = new StreamReader(fileStream);
string line = null;
line = reader.ReadToEnd();
string[] parts = line.Split('\n');
string user = userNameOnly();
try
{
int userCount;
userCount = parts.Length;
CheckBox[] chkPerm = new CheckBox[userCount];
int height = 1;
int padding = 10;
for (int i = 0; i < userCount; i++)
{
chkPerm[i] = new CheckBox();
string Perm = "Perm";
chkPerm[i].Name = parts[i].Trim('\r') + Perm;
chkPerm[i].Text = parts[i];
chkPerm[i].TabIndex = i;
chkPerm[i].AutoCheck = true;
chkPerm[i].Bounds = new Rectangle(15, 40 + padding + height, 100, 22);
//Assigns an eventHandler to the chkPerm.CheckBox that tells you if something is clicked, then that checkBox is selected/checked.
//Not currently in use.
chkPerm[i].Click += new EventHandler(checkChangedPerm);
targetForm.Controls.Add(chkPerm[i]);
height += 22;
//MessageBox.Show(chkPerm[i].Name);
}
}
catch
{
}
fileStream.Close();
}
я могу получить доступ к checkbox.Name на основе события щелчка, так что я знаю, что я получаю правильный checkbox.Name
public static void checkChangedPerm(Object sender, EventArgs e)
{
CheckBox c = sender as CheckBox;
if (c.Name != null && c.Name != "")
{
int count = c.Name.Count();
string trimmed = c.Name.ToString();
string outPut = trimmed.Remove(count - 4);
}
else
{
}
}
Я искал это большую часть утра и весь день в пятницу. Может ли кто-нибудь указать мне в правильном направлении или, возможно, предложить какой-то образец кода. Пожалуйста пожалуйста. Заранее спасибо. Я действительно ценю это. : -D
Итак, похоже, что вы динамически создаете флажки на основе имен в файле. Вы можете либо открыть файл, найти строку и удалить ее, либо заново создать файл, используя то, что вы выбрали для своих флажков, за вычетом того, который вам не нужен. Я бы лично пошел со вторым вариантом, но я не уверен, как выглядит файл. Вы не знаете, как писать текстовый файл или ...? В качестве альтернативы, может быть проще использовать сериализацию в зависимости от конечной цели, поскольку вы могли бы просто десериализовать/сериализовать объект в текстовый файл по мере необходимости. – user1274820
Я согласен с рекомендациями @ user1274820. В дополнение к ним, пожалуйста, не игнорируйте все исключения с пустым 'try..catch', ставьте два объекта' Stream' в 'using', чтобы убедиться, что они правильно освобождены и взглянуть на класс TextReader. прочитайте файл за строкой, а не сначала загрузите весь файл в память, это также устранит необходимость ручной обрезки символов новой строки из ваших строк. –
@ user1274820 Мое замешательство, я думаю, пытается записать обратно в файл. Я могу получить событие click из флажка, который я хочу удалить, но это не дает мне других 20 флажков на странице, которые мне нужно оставить. В этом и заключается моя сложность. Думаю, я понимаю разбор текста из строки, но разбор строки из середины строки или из stringArray. Я не понимаю, думаю. –