私のWindowsアプリケーションにはListViewがあります。このListViewの各項目にはいくつかのSubItemがあり、そのうちの1つは画像へのファイルパスを格納するために使用されます。OpenFileDialogで文字列としてファイルパスを正しくフォーマットするには?
ListViewの項目が選択されると、PictureBox内の画像は次のコードで更新されます。
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
//check that only one item is selected
if (listView1.SelectedItems.Count == 1)
{
//update the image from the filepath in the SubItem
pictureBox1.Image = Image.FromFile(listView1.SelectedItems[0].SubItems[1].Text);
}
}
これはすべて正常に動作します。ただし、PictureBoxをクリックすると、OpenFileDialogが開き、ユーザーは画像を選択できます。次に、ListView内の現在選択されている項目のSubItem.Textを画像のファイルパスに変更します。ファイルパスがChosen_Fileに割り当てられたとき
private void pictureBox1_Click(object sender, EventArgs e)
{
//open a file dialog to chose an image and assign to the SubItem of the selected item
openFileDialog1.ShowDialog();
openFileDialog1.FileName = "";
string Chosen_File = "";
Chosen_File = openFileDialog1.FileName;
listView1.SelectedItems[0].SubItems[1].Text = Chosen_File;
}
しかし、それは私が項目を選択したときに、私はArgumentExceptionがを得ることを意味し、正しくフォーマットされていません。
なぜファイルパスが正しくフォーマットされていないのですか?また、ファイルパスをChosen_Fileに割り当てるときにどうすればよいですか?
にキャンセルボタンを選択するユーザーを処理する必要がないようにあなたのコードを変更する必要がありますIE openFileDialog1.FileName = "")あなたのコードは期待どおりに動作します – Steve
また、temp var 'listView1.SelectedItems [0] .SubItems [1] .Text = openFileDialog1.FileName;で結果をスコープする必要はありません。 – Plutonix
@Plutonixそれを修正します。 –