Принятый ответ является лучшим, но так как существует больше чем один способ сделать это, вот другое решение:
if [ "$string" != "${string/foo/}" ]; then
echo "It's there!"
fi
${var/search/replace}
$var
с первой инстанцией search
заменены replace
, если это найдено (это не изменяется $var
). При попытке заменить foo
ничем, и строка изменилась, то, очевидно foo
был найден.
ListViewItems не осведомлены о ваших столбцах ListView.
Чтобы напрямую ссылаться на столбец, вам сначала нужно добавить все столбцы в ListViewItem.
Итак ... скажем, ваш ListView имеет три столбца A, B и C; Следующий фрагмент кода добавит данные только в столбец A:
ListViewItem item = new ListViewItem();
item.text = "Column A";
m_listView.Items.Add(item);
Чтобы заставить его добавить текст и в столбец C, нам сначала нужно сообщить ему, что у него есть столбец B ...
ListViewItem item = new ListViewItem();
item.text = "Column A";
item.SubItems.Add("");
item.SubItems.Add("Column C");
m_listView.Items.Add(item);
Итак, теперь мы есть столбцы A, B и C в ListViewItem, и текст появляется в столбцах A и C, но не в B.
Наконец ... теперь, когда мы СКАЗАЛИ, что у него три столбца, мы можем делать все, что захотим к этим конкретным столбцам ...
ListViewItem item = new ListViewItem();
item.text = "Column A";
item.SubItems.Add("");
item.SubItems.Add("Column C");
m_listView.Items.Add(item);
m_listView.Items[0].SubItems[2].Text = "change text of column C";
m_listView.Items[0].SubItems[1].Text = "change text of column B";
m_listView.Items[0].SubItems[0].Text = "change text of column A";
надеюсь, что это поможет!
Обычно я наследую ListViewItem как:
public class MyOwnListViewItem : ListViewItem
{
private UserData userData;
public MyOwnListViewItem(UserData userData)
{
this.userData = userData;
Update();
}
public void Update()
{
this.SubItems.Clear();
this.Text = userData.Name; //for first detailed column
this.SubItems.Add(new ListViewSubItem(this, userData.Surname)); //for second can be more
}
}
где
public class UserData
{
public string Name;
public string Surname;
}
с помощью
listView1.Items.Add(new MyOwnListViewItem(new UserData(){Name="Name", Surname = "Surname"}));
Может быть, что-то вроде этого?
ListViewItem item = m_listview.Items.Add("1850");
item.Subitems.Add(string.Empty); //Make an add method that does this for every column you got and then you can use the indexer below.
item.Subitems[1].Text = "Test";
Индекс 0 является основным элементом. Индекс 1> - это подпункты.
ListViewItem item = new ListViewItem("foo");
item.SubItems.Add("foo2");
this.listView1.Items.Add(item);
ListView не поддерживает привязку данных и строго типизированное именование. Я бы рекомендовал вместо этого рассмотреть возможность использования DataGridView. В зависимости от того, что вам нужно, это может сэкономить вам несколько очков здравомыслия.
У Черникова это хорошо реализовано, чтобы сделать вещи немного разумнее.