選択したアイテムのテキストと別の値を設定、取得したいということだと解釈しました。
最初に下記のようにSubItemを利用してはどうかと書きましたが、ListViewItemのTagプロパティを利用したほうがいいと思います。
こちらであれば、Viewの値に関係なく利用できますし
ViewをDetailsにしないのであれば、SubItemを利用するのはどうでしょうか?
C#
1private void Form1_Load(object sender, EventArgs e)
2{
3 listView1.Columns.Add("Text");
4 listView1.Columns.Add("Value");
5
6 for (int i = 0; i < 10; i++)
7 {
8 ListViewItem item = new ListViewItem($"Text{i:00}");
9 // コードを文字列でセットする
10 item.SubItems.Add((i*100).ToString("000"));
11 listView1.Items.Add(item);
12 }
13
14}
15
16private void listView1_MouseClick(object sender, MouseEventArgs e)
17{
18 ListViewItem item = listView1.SelectedItems[0];
19 // item.SubItems[1].Textでコードの文字列を取得できるので利用する場合は適切な型へキャストする
20 MessageBox.Show($"item.Text={item.Text} : SubItem = {item.SubItems[1].Text}", "test", MessageBoxButtons.OK, MessageBoxIcon.Information);
21}
Tagプロパティを使用する場合
C#
1private void Form1_Load(object sender, EventArgs e)
2{
3 for (int i = 0; i < 10; i++)
4 {
5 ListViewItem item = new ListViewItem($"Text{i:00}");
6 item.Tag = i * 100;
7 listView1.Items.Add(item);
8 }
9
10}
11
12private void listView1_MouseClick(object sender, MouseEventArgs e)
13{
14 ListViewItem item = listView1.SelectedItems[0];
15 MessageBox.Show($"item.Text={item.Text} : Tag = {item.Tag}", "test", MessageBoxButtons.OK, MessageBoxIcon.Information);
16}