うちのカレーにはこれが入ってる!って食材ありますか?

プログラムの勉強を始めたばかりのものです。
Visual Studio Community 2017 を使用して C# で Windows Form Application を勉強中です。

添付の図のようにForm上にListBoxを配置して、ユーザーが選択したアイテムの値をListBox上で直接リネームできるようにしたいのですが(Windowsのファイルをリネームする操作のように)、どう記述すれば良いでしょうか?

やりたいこととしては下記リンク先の解説のようなことです(こちらはListViewの例ですが)。

「ListViewのアイテムのテキストをユーザーが編集できるようにする」
 https://dobon.net/vb/dotnet/control/lvlabeledit. …
 ・ゆっくり2回クリックすることで、編集できるようにする
 ・F2キーを押すことで、編集できるようにする

別の解決法として「ListBoxのアイテムをダブルクリックするとリネーム用のダイアログのFormが開いて、リネームできる」というのも試し中なのですが、ユーザーの操作が煩雑になるのでできれば避けたいと考えています。

こちらについて、アドバイスをいただけるととても嬉しいです。
よろしくお願いします。m(_ _)m

「C# ListBoxのアイテムをユーザー」の質問画像

A 回答 (3件)

No.1です。


お礼を見て。

リストボックスをClickしてTextBox1に表示し、内容を書き換えTextBoxをダブルクリックしてでもよければ、
別質問のコードと関連しますが、

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      textBox1.Text = listBox1.SelectedItem.ToString();
    }

    private void textBox1_DoubleClick(object sender, EventArgs e)
    {
      int id = listBox1.SelectedIndex;
      lst = new List<string>(listBox1.Items.Cast<string>().ToList());

      listBox1.Items.Clear();
      string st = textBox1.Text;
      lst.RemoveAt(id);
      lst.Insert(id, st);

      listBox1.Items.AddRange(lst.ToArray());
    }

こんな感じでなら可能ですけど。
ただ画像を見ると2つリストボックスがありますから、どっちから飛ばしたとかまだ改良の余地はあるかな?
    • good
    • 0
この回答へのお礼

こちらのお礼はNo.3の方に書かせていただいています。

お礼日時:2017/10/30 02:54

No.2です。



リストボックスもダブルクリックイベントの方が良いかも?

private void listBox1_DoubleClick(object sender, EventArgs e)
{
textBox1.Text = listBox1.SelectedItem.ToString();
}
    • good
    • 0
この回答へのお礼

めぐみんさん、度々のアドバイスをありがとうございます‥!

実はTextBoxに打ち込んだ文字列をボタンクリックでリネームするというのはすでに試し済みでして
UIの見やすさや操作の直感的さから見送りました。。

ですが、本回答で教えて頂いたように
Listを使ってリストアイテム入れ替えするのと同様に
アイテムの値も入れ替えられるのですね。
これはとても便利と思いましたので、覚えておきます!

お礼日時:2017/10/30 02:53

TextBoxではないので楽にはいかないでしょう(たぶん)



継承とか使えばですが、結局『別の解決法』より頭が痛くなるかもです(たぶん・・・継承苦手でして)

ComboBoxならどうかなぁ~
試した事ないから不明です。

・・・殆ど回答になってませんね。
    • good
    • 0
この回答へのお礼

めぐみんさん、ご回答ありがとうございます!

なるほど、プログラム自体、勉強を開始したばかりの私の手には負え無さそうですね。。
今回はダイアログを出す方向で実装を進めたいと思います!

余談ですが、メーラーで言えば、件名を一覧してポチポチとアイテムの選択をすると内容がTextBoxに表示される‥というような、アイテムが一覧された中からアイテムを手軽に切り替えられるようなツールを作りたいと思っているのでListBoxを試している感じになります。

お礼日時:2017/10/29 18:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報