
プログラムの勉強を始めたばかりのものです。
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

No.2ベストアンサー
- 回答日時:
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つリストボックスがありますから、どっちから飛ばしたとかまだ改良の余地はあるかな?
No.3
- 回答日時:
No.2です。
リストボックスもダブルクリックイベントの方が良いかも?
private void listBox1_DoubleClick(object sender, EventArgs e)
{
textBox1.Text = listBox1.SelectedItem.ToString();
}
めぐみんさん、度々のアドバイスをありがとうございます‥!
実はTextBoxに打ち込んだ文字列をボタンクリックでリネームするというのはすでに試し済みでして
UIの見やすさや操作の直感的さから見送りました。。
ですが、本回答で教えて頂いたように
Listを使ってリストアイテム入れ替えするのと同様に
アイテムの値も入れ替えられるのですね。
これはとても便利と思いましたので、覚えておきます!
No.1
- 回答日時:
TextBoxではないので楽にはいかないでしょう(たぶん)
継承とか使えばですが、結局『別の解決法』より頭が痛くなるかもです(たぶん・・・継承苦手でして)
ComboBoxならどうかなぁ~
試した事ないから不明です。
・・・殆ど回答になってませんね。
めぐみんさん、ご回答ありがとうございます!
なるほど、プログラム自体、勉強を開始したばかりの私の手には負え無さそうですね。。
今回はダイアログを出す方向で実装を進めたいと思います!
余談ですが、メーラーで言えば、件名を一覧してポチポチとアイテムの選択をすると内容がTextBoxに表示される‥というような、アイテムが一覧された中からアイテムを手軽に切り替えられるようなツールを作りたいと思っているのでListBoxを試している感じになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
C#で動的配列Listの中身をListBoxに表示するには
C言語・C++・C#
-
C# ListBoxのインデックスの値を入れ替えたい
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
5
CloseとDisposeの違い
Visual Basic(VBA)
-
6
ListBoxで改行したい
Visual Basic(VBA)
-
7
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
8
ラジオボタンの初期指定
Visual Basic(VBA)
-
9
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
10
C#です。リストボックスの項目をダブルクリックすると、別のフォーム出現するには
その他(プログラミング・Web制作)
-
11
panelのスクロール表示について
Visual Basic(VBA)
-
12
テキストボックスに入力された値の判定
Visual Basic(VBA)
-
13
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
14
C# DataGridViewで複数選択したセルに同じ値を一括で入力するには
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# ListBoxのアイテムをユーザ...
-
特定の文字列が一致する行から...
-
PHPのSHA256変換について
-
オブジェクトの中のプロパティ...
-
ORA-01858: 数値を指定する箇所...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
C#で動的配列Listの中身をListB...
-
IF関数でEmpty値を設定する方法。
-
変数を動的に利用するには?
-
C#の質問
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
-
Path型をString型へ変換する(Java)
-
JSPでImportエラーになります
-
[至急]Project Euler:#17Number...
-
パソコンキーボードで時分秒を...
-
C# ListBoxのインデックスの値...
-
配列にnullを代入すると、null...
-
JSPのアルゴリズムで質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Java8以降】csvファイルの複...
-
C# ListBoxのアイテムをユーザ...
-
マルチスレッドで同時にFTPアッ...
-
strcmp関数などでの複数の文字...
-
特定の文字列が一致する行から...
-
デバックができない C#
-
「(string)$i」のような変則な文
-
C#でIPアドレスの取得について
-
★C#のXML読み込みについて
-
string→CStringの型変換について
-
jap実行時のTomcatのエラーに困...
-
p->next(ポインタ)的なことを...
-
コンストラクタの変数を別のコ...
-
C#についてです
-
プログラミングC++に関して質...
-
ArrayListを改良したい
-
「指定されたキャストは有効で...
-
strtokでの空文字への置き換え
-
C# List型のIndesOf メゾットに...
-
C#での関数テーブルの作り方
おすすめ情報