Господа, была у меня проблемк — сделать возможным ввод в ListView.
Одним из решений было динамически создавать textBox, что я и сделал.
Но в целом меня смущает некоторая корявость этого решения. в C# я новичек,
поэтому прошу Вас покритиковать нижеследуещее...
Итак.
Есть множество разных ListView. Штуки три

.
Созадны посредством дизайнера.
Перехватываем следующие события в таком аспекте:
private void listViewRegions_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(listViewRegions.SelectedItems.Count < 1)
{
listViewRegions.Items[prevSelectionRegions].SubItems[1].Text = tempTextBox.Text;
tempTextBox.Hide();
tempTextBox.Dispose();
return;
}
DoEdit(ref prevSelectionRegions, ref listViewRegions);
}
private void listViewRegions_Leave(object sender, System.EventArgs e)
{
try
{
listViewRegions.Items[prevSelectionRegions].SubItems[1].Text = tempTextBox.Text;
tempTextBox.Hide();
tempTextBox.Dispose();
return;
}
catch(Exception ex)
{
MessageBox.Show("Непонятная, жутковатая ошибка");
}
}
Также имеется ф-я
private void DoEdit( ref int prevSelection, ref ListView listView)
{
TextBox m_tempTextBox = new TextBox();
m_tempTextBox.BorderStyle = 0;
m_tempTextBox.Size = new System.Drawing.Size(listView.Columns[1].Width,
listView.SelectedItems[0].Bounds.Height);
m_tempTextBox.Location = new System.Drawing.Point(listView.Columns[0].Width,
listView.SelectedItems[0].Bounds.Top);
m_tempTextBox.TabIndex = 1;
m_tempTextBox.Parent = listView;
m_tempTextBox.Text = listView.Items[listView.SelectedIndices[0]].SubItems[1].Text;
tempTextBox = m_tempTextBox;
prevSelection = listView.SelectedIndices[0];
m_tempTextBox.Show();
m_tempTextBox.Focus();
m_tempTextBox.Select(0,m_tempTextBox.Text.Length);
}
В классе формы объявлены
private TextBox tempTextBox; // For listView in Load
private int prevSelectionRegions;
Вроде бы все более менее неглючно, но хотелось бы, чтобы спецы взглянули.
Спасибо большое!
Я весьма доверчив, когда речь идет о моих словах. Я верю всему, что
говорю, хотя и знаю, что я лжец.