- ベストアンサー
Console.ReadLine()で、入力デフォルト値を指定できますか?
- C#でプログラムをつくっています。Console.ReadLine()を使えば、コマンドプロンプト上からのキー入力を文字列として受け取れますが、最初は空の状態です。デフォルト値を指定することで、ユーザーがただEnterキーを押したときに、デフォルト値を返すことができますか?
- また、指定したデフォルト値を画面上に表示し、ユーザーが編集できるような方法はありますか?
- C#プログラムでConsole.ReadLine()を使用して、デフォルト値を指定および表示および編集可能にする方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
何だかよさそうなもの見付けましたよ。 説明(英語): http://tirania.org/blog/archive/2008/Aug-26.html ライブラリ(これを取り込む): http://anonsvn.mono-project.com/source/trunk/mcs/tools/csharp/getline.cs LineEditorのEdit()メソッドは第1引数がプロンプトで第2引数が初期値のようです。 C#の基本ライブラリのみに依存し、外部プログラムは必要ないそうです。 ライセンスも制限が緩いもののようです。
その他の回答 (4)
- tatsu99
- ベストアンサー率52% (391/751)
#3です。 >abcdeと表示したあと、キー入力待ちとなって、そのabcdeを編集できないか?ということなんです。 >もちろん、Console.ReadLine()がそのような引数を取らないのは分かっていますので、何か別のメソッドがあればと思ったのですが、、 なるほど、そういうことですか。 コンソールアプリケーションの場合、上記を簡単に実現するメソッドは無いようです。カーソル位置を制御するメソッドがあるので、デフォルトの値を出力後、そのデフォルト値の先頭にカーソルを位置づけてReadLineを行えば、できるかも知れませんが、やったことはないので、判りません。もし、出来たとしても、コンソール上のカーソル位置の制御を全て自前で行いますので、相当大変かと思います。 GUIが使用できるなら、テキストボックスにデフォルト値を表示させて、それをユーザーに編集してもらい、取り込むのが、簡単かと思います。
- tatsu99
- ベストアンサー率52% (391/751)
>本当は、デフォルト値を編集する方法がメインで聞きたいことなんです。 ユーザーにデフォルト値を編集してもらえるようにするなら、自分でそのような仕組みを実装する必要があります。 1例としては、以下のような方法があります。 このデフォルト値を定義したファイルを「デフォルト定義ファイル」と呼ぶことにします。 デフォルト定義ファイルは、CSV形式(タブ区切り、又はカンマ区切り)とします。 デフォルトの項目名,デフォルト値 をそのファイルに定義します。例として、以下のようになります。 name1,defaultdata1 name2,defaultdata2 name3,defaultdata3 ここでデフォルトの項目名(name1,2,3)は、プログラムの内部で抱える名称になるので、 ユーザは、編集しないものとします。(編集は出来るが、紳士協定でしないことにする) 編集できるのは、defaultdata1,2,3のみとします。 このファイルを予め、決められた場所においておき、そのファイルを起動時に読み込んで、 defaultdata1,2,3をプログラムで使用するようにします。 もし、上記の作業が大変なら、動的プロパティを使う方法がありますが、 一般ユーザーが、このデフォルト値を編集すると言うよりは、システムの管理者が、このデフォルトを 編集するのに近い形になります。その分リスクが高くなりますが、それでも良いと割り切れるなら、 動的プロパティをつかうのも、一つの案です。 動的プロパティについては、参考URLを参照下さい。
補足
回答ありがとうございます。 私がやりたかったことは、Console.ReadLine()を例にすると、 string s = Console.ReadLine("abcde"); とすると、abcdeと表示したあと、キー入力待ちとなって、そのabcdeを編集できないか?ということなんです。 もちろん、Console.ReadLine()がそのような引数を取らないのは分かっていますので、何か別のメソッドがあればと思ったのですが、、
- vipasigaru
- ベストアンサー率38% (16/42)
できません いきなりEnterは、 ""という文字列が入力された ということで、 何も入力しなかったという意味ではありません
- tyatsumi
- ベストアンサー率58% (30/51)
ReadLine()を呼んだ後、sの中身が空だったら、sにデフォルト値を代入すればよいと思います。 デフォルト値を編集できるようにする方法は私はわかりませんが、たぶん難しいと思います。 私はC#はHello Worldしか書いたことがないので、あとは他の人にゆずります。
補足
回答ありがとうございます。 自分の質問を読み返してみると、質問の仕方が悪かったです。 本当は、デフォルト値を編集する方法がメインで聞きたいことなんです。
お礼
回答ありがとうございます。 早速試してみたいと思います。