Console.ReadLine()で、入力デフォルト値を指定できますか?
C#でプログラムをつくっています。
Console.ReadLine()を使えば、コマンドプロンプト上からのキー入力を文字列として受け取れますが、最初は空の状態です。
例えば、
string s = Console.ReadLine()
を実行し、Enterキーを押すと、sは何も入力されませんが、デフォルト値を指定することで、ユーザーがただEnterキーを押したときに、デフォルト値を返すような方法はありますか?
また、指定したデフォルト値を画面上に表示し、ユーザーが編集できるような方法はありますでしょうか?
どうぞよろしくお願いします。
No.5ベストアンサー
- 回答日時:
何だかよさそうなもの見付けましたよ。
説明(英語): http://tirania.org/blog/archive/2008/Aug-26.html
ライブラリ(これを取り込む): http://anonsvn.mono-project.com/source/trunk/mcs …
LineEditorのEdit()メソッドは第1引数がプロンプトで第2引数が初期値のようです。
C#の基本ライブラリのみに依存し、外部プログラムは必要ないそうです。
ライセンスも制限が緩いもののようです。
No.4
- 回答日時:
#3です。
>abcdeと表示したあと、キー入力待ちとなって、そのabcdeを編集できないか?ということなんです。
>もちろん、Console.ReadLine()がそのような引数を取らないのは分かっていますので、何か別のメソッドがあればと思ったのですが、、
なるほど、そういうことですか。
コンソールアプリケーションの場合、上記を簡単に実現するメソッドは無いようです。カーソル位置を制御するメソッドがあるので、デフォルトの値を出力後、そのデフォルト値の先頭にカーソルを位置づけてReadLineを行えば、できるかも知れませんが、やったことはないので、判りません。もし、出来たとしても、コンソール上のカーソル位置の制御を全て自前で行いますので、相当大変かと思います。
GUIが使用できるなら、テキストボックスにデフォルト値を表示させて、それをユーザーに編集してもらい、取り込むのが、簡単かと思います。
参考URL:http://msdn.microsoft.com/ja-jp/library/system.c …
No.3
- 回答日時:
>本当は、デフォルト値を編集する方法がメインで聞きたいことなんです。
ユーザーにデフォルト値を編集してもらえるようにするなら、自分でそのような仕組みを実装する必要があります。
1例としては、以下のような方法があります。
このデフォルト値を定義したファイルを「デフォルト定義ファイル」と呼ぶことにします。
デフォルト定義ファイルは、CSV形式(タブ区切り、又はカンマ区切り)とします。
デフォルトの項目名,デフォルト値
をそのファイルに定義します。例として、以下のようになります。
name1,defaultdata1
name2,defaultdata2
name3,defaultdata3
ここでデフォルトの項目名(name1,2,3)は、プログラムの内部で抱える名称になるので、
ユーザは、編集しないものとします。(編集は出来るが、紳士協定でしないことにする)
編集できるのは、defaultdata1,2,3のみとします。
このファイルを予め、決められた場所においておき、そのファイルを起動時に読み込んで、
defaultdata1,2,3をプログラムで使用するようにします。
もし、上記の作業が大変なら、動的プロパティを使う方法がありますが、
一般ユーザーが、このデフォルト値を編集すると言うよりは、システムの管理者が、このデフォルトを
編集するのに近い形になります。その分リスクが高くなりますが、それでも良いと割り切れるなら、
動的プロパティをつかうのも、一つの案です。
動的プロパティについては、参考URLを参照下さい。
参考URL:http://uchukamen.com/Programming1/DynamicProperty/
この回答への補足
回答ありがとうございます。
私がやりたかったことは、Console.ReadLine()を例にすると、
string s = Console.ReadLine("abcde");
とすると、abcdeと表示したあと、キー入力待ちとなって、そのabcdeを編集できないか?ということなんです。
もちろん、Console.ReadLine()がそのような引数を取らないのは分かっていますので、何か別のメソッドがあればと思ったのですが、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) 自分のデフォルトゲートウェイをアドレスバーに入力し、Enterキーを押します。(一般的なデフォルトゲ 4 2022/05/30 22:43
- その他(ブラウザ) ・再投稿です 自分のデフォルトゲートウェイをアドレスバーに入力し、Enterキーを押します。(一般的 1 2022/05/30 23:16
- Windows 10 エクスプローラで希望の場所が表示できない 2 2023/06/29 15:19
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- マウス・キーボード テンキーの設定がおかしくなっています。 5 2023/08/09 15:35
- オープンソース Try Kotlinで readLine()を使うには 1 2023/03/27 21:06
- マウス・キーボード win7 文字変換選択確定をテンキーでさせない 3 2023/03/05 16:29
- その他(IT・Webサービス) Google日本語入力の操作方法 一度確定した後の訂正方法 1 2023/06/17 16:03
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- その他(プログラミング・Web制作) vbaで座標を指定してコマンドプロンプト画面を表示させる。 1 2023/01/09 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでストアドの戻りパラメータ...
-
SQL ServerのストアドでOUTPUT...
-
バッチファイル
-
SQL*LoaderのDATA引数
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
Oracleの起動時に、マウントし...
-
DOSプロンプトとコマンドプロン...
-
PL/SQLでログを確認したい。
-
順序のEXP/IMPについて
-
ORACLEのUPDATE処理
-
エクセルVBAでRangeの引数制限?
-
4GB = 4096MB ではない?
-
表領域 TEMPの使用率。
-
PL/SQLのコンパイルエラーにつ...
-
dmpファイルのインポート時にで...
-
SQL*PLUSを終了させる方法
-
oracle ダンプファイルのサイズ...
-
トレースファイルの削除スクリプト
-
インポートコマンドが認識され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでストアドの戻りパラメータ...
-
Console.ReadLine()で、入力デ...
-
SQL ServerのストアドでOUTPUT...
-
SQL*LoaderのDATA引数
-
インラインフレームでpdfフ...
-
REDOログファイルを移動したい...
-
バッチファイル
-
VCでグループボックスを不可...
-
Perlファイルのパラメータの変数名
-
名前付きシステム ミューテック...
-
MS-DOSのbatchファイルに詳しい...
-
ORA-01013のエラーについて経験...
-
PL/SQLでログを確認したい。
-
CASE文のエラーについて
-
PL/SQLのコンパイルエラーにつ...
-
「Fパラメータ」が出力端「開放」「...
-
PL/SQL PLS-00103エラーについて
-
Oracleの起動時に、マウントし...
-
SQL実行結果の出力を見やすくし...
-
DOSプロンプトとコマンドプロン...
おすすめ情報