Я готовлюсь к тесту на 1-й год, и один из вопросов, о котором я знаю, это «Создайте пользовательский элемент управления с текстовым полем и кнопкой, а в форме создайте список». Хорошо. Теперь, что должно произойти, listBox перечисляет файлы из каталога. и textBox в User Control читает содержимое этого файла (.txt), и пользователю разрешено редактировать текстовое поле, а кнопка сохранения при нажатии должна перезаписывать исходный файл. Теперь я получил все чтение textBox с помощью StreamReader. Но я не могу получить кнопку в пользовательском элементе управления, чтобы получить путь к каталогу из ListBox.
Я должен перезаписать его с помощью StreamWriter, не могу использовать FileDialog. Он должен получить имя файла из ListBox, а затем оно загружается в путь каталога StreamWriter, который должен быть в btnSave, который находится в UserControl.
Я попытался сделать наоборот со свойством userControl userControl1.Text
со свойством, которое я сделал. Затем попытался вызвать его как userControl из формы Form1.ItemsName
, но это не сработало, поэтому я его очистил. Теперь у меня полный блок кодеров.
И я в тупике. Я пробовал все, чтобы получить btnSave в userControl, чтобы иметь возможность получать данные из формы listBox.SelectedItem.Text
Форма состоит из: listBox и UserControl
userControl состоит из: textBox и Button(btnSave).
Код формы 1:
private void Form1_Load(object sender, EventArgs e)
{
// Reads the content from the file,
//listing other files in dir.
StreamReader sr = new StreamReader(@"C:\C# Resources\Numbers.txt");
string line = sr.ReadLine();
try
{
// Adds content from Numbers.txt into the ListBox
while (line != null)
{
this.listBox1.Items.Add(line);
line = sr.ReadLine();
}
sr.Close();
}
catch (Exception Exc)
{
MessageBox.Show(Exc.Message.ToString());
}
finally
{
sr.Close();
}
}
private void listBox1_Click(object sender, EventArgs e)
{
// Reads the name of the file in the list box, looking for the file in the dir.
StreamReader file = new StreamReader(@"C:\C# Resources\" + listBox1.SelectedItem.ToString() + ".txt");
string all = file.ReadToEnd();
//Loads the ListBox_click file's content into the userControl textBox
userControl11.Text = all.ToString();
}
}
Код пользовательского контроля:
// Creates method so the it can be loaded into form
public string Text
{
set
{
textBox2.Text = value;
}
get
{
return textBox2.Text;
}
}
//Has to overwrite/Save the content changed by the user in TextBox to the same
//directory/file it came from.
private void btnSave_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(@"C:\C# Resources\" + /*Method to get the file path from the Form1 ListBox*/ + ".txt");
}
}