1 名前:たかし [2015/12/25(金) 18:43:55.48 .net] 先生を募集します 先生!!
442 名前:takasi mailto:sage [2016/01/11(月) 19:17:14.85 .net] おはようございます
443 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:22:20.87 .net] https://github.com/katahiromz/JankenGUI これをForkしたものをローカルにcloneしてみたまえ。 Forkとは、方向性の違う分家を作り、自分好みに変えるために、 自分のリポジトリとして複製することだ。
444 名前:takasi mailto:sage [2016/01/11(月) 19:24:50.91 .net] >>440 分かりやすいですけど完全な初学者向けではないかもしれません 2進数やビットが何も解説無く出てくるので 別に知らなくても読み進められますけど、猫でも分かるはいいすぎかもしれませんにゃ LINQはまだ学習していませんがそこまで行ったら使ってみますね
445 名前:takasi mailto:sage [2016/01/11(月) 19:26:06.27 .net] 先生おはようございます 寝起きなので少々お待ち下さい
446 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:27:00.43 .net] JankenGUI.slnを開き、デザインフォームで二つのPictureBoxのWidth,Heightを60にしなさい。 ドラッグやShiftキーでフォーム上のコントロールを複数選択し、VSの 「書式」メニューを使ってコントロールの位置を調整しなさい。
447 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:32:14.41 .net] 同じフォルダにある音声ファイル(*.wav)や画像ファイル(*.png)を確認。 ソリューションエクスプローラの「Properties」をダブルクリック。 リソースを選択。「リソースの追加」の右三角をクリック、 「既存のファイルの追加」を選ぶ。ファイルの種類を「ビットマップ」にし、 Shiftを押しながらpngファイルをすべて選択して開く。 オーディオのwavファイルも同様。
448 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:35:33.57 .net] ここで「リソース」というのは、EXEファイルにデータを埋め込む機構のことだ。 データが埋め込まれていないデータファイルなら、容易に第三者に盗用されてしまう。 リソースはある程度これを防ぐ。
449 名前:takasi mailto:sage [2016/01/11(月) 19:36:51.66 .net] 今から始めます スタート
450 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:40:31.55 .net] button1をダブルクリック、次のコードを追加。 「pictureBox1.Image = Properties.Resources.gu; var player = new System.Media.SoundPlayer(Properties.Resources.gu1); player.PlaySync();」 できたら、デバッグ実行して、button1をクリックしてみよ。
451 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:45:49.55 .net] コントロールはFontプロパティで文字を大きくしている。 また、ボタンを大きくした文字列に合わせるためにAutoSizeをTrueにした。
452 名前:takasi mailto:sage [2016/01/11(月) 19:48:37.97 .net] デザインフォームはどうやって表示させるのでしょうか? slnファイルを開きエクスプローラからファイル一つ一つクリックしたのですが コードが表示されるだけです
453 名前:takasi mailto:sage [2016/01/11(月) 19:49:16.22 .net] 右クリックからビューデザイナで表示できました失礼しました
454 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 19:50:06.53 .net] 課題。ジャンケンゲームを完成させなさい。 ボタンとフォームの背景色を変更しなさい。 フォームはサイズ変更できないようにしなさい。
455 名前:takasi mailto:sage [2016/01/11(月) 20:03:30.19 .net] 課題始めます
456 名前:仕様書無しさん mailto:sage [2016/01/11(月) 20:05:49.76 .net] >>444 あ、勘違いしてる LINQPadはLINQ専用のツールじゃないよ ちょっと試したいC#コードの断片がある時に、 わざわざVisual StudioでSolutionやProjectとか作らずに 気楽に試すことができるツール
457 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 20:06:34.60 .net] フォームが読み込まれたときの処理はLoadイベントで行う。 表示されたときの処理はShownイベントで行う。 イベントはプロパティウィンドウのカミナリをクリックすれば見られる。
458 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 20:13:34.58 .net] 画像がPictureBoxからはみ出る場合は SizeModeプロパティをいじるとよかろう。 ちなみに、画像はGoogle画像検索で「ジャンケン フリー素材」を検索して拾った。 音声は自分で録音したものだ。
459 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 20:17:14.83 .net] 自分で画像を用意したい場合はGIMPやInkscapeといったフリーソフトで 作成・編集したり、カメラやスキャナで取り込んだりするとよい。
460 名前:takasi mailto:sage [2016/01/11(月) 20:23:30.63 .net] >>456 課題終わったら使ってみます! 思ったより頭が働いてないので少し時間かかります
461 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 20:29:58.66 .net] リソースデータは名前で参照する。名前が重要だ。 どのリソースを使うかは、名前で決めないといけない。
462 名前:仕様書無しさん mailto:sage [2016/01/11(月) 20:36:45.79 .net] >>460 気が向いたらでおkっす
463 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 21:01:55.05 .net] ヒント:ボタンのクリック処理を関数で共通化
464 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 21:06:36.41 .net] ヒント:勝ち負け判定関数
465 名前:takasi mailto:sage [2016/01/11(月) 21:11:19.73 .net] 最序盤でつまづいています スタートボタンを押して開始→手をクリック→手を受け取り条件分岐 こういう流れで行きたいのですが えーまず、メインのジャンケンの処理をどこに記述すればよいのかで混乱しています
466 名前:takasi mailto:sage [2016/01/11(月) 21:17:10.61 .net] 頭のなかではこんな感じなのですがhttps://i.gyazo.com/18d3d208948dbd5047961437a72d9359.png 実装の仕方がわからず・・・ さっさと質問しとけばよかったですすみません
467 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 21:20:18.45 .net] ... button1_click(...) { show_hand(1); } ... button2_click(...) { show_hand(2); } ... button3_click(...) { show_hand(3); } void show_hand(int player_hand) { int comp_hand = get_comp_hand(); ...手を表示する処理をここに書く... switch(hantei(player_hand, comp_hand)) { ...勝ち負けを表示... } }
468 名前:takasi mailto:sage [2016/01/11(月) 21:24:17.30 .net] ありがとうございます 分からなかったらまた聞きます 行ってきます
469 名前:takasi mailto:sage [2016/01/11(月) 22:30:37.72 .net] 今日中に終わらなそうです
470 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 22:32:51.24 .net] 残りは明日にするか。 どこまでできた?
471 名前:takasi mailto:sage [2016/01/11(月) 22:42:42.02 .net] 判定して結果を表示させる所まで来ました あとはあいこのループ処理と画像の表示と音声のタイミングが合ってないのでそれを直すことです
472 名前:takasi mailto:sage [2016/01/11(月) 22:46:06.33 .net] ・スタートおした時のジャンケンポンの効果音 ・判定後のスタートをリセット ・画像のサイズをあわせる まだまだありました
473 名前:takasi mailto:sage [2016/01/11(月) 22:46:37.45 .net] 明日の授業までに終わらせておきます
474 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 22:48:43.00 .net] PlaySyncを使うとそこで処理が動かなくなる。 画像を変えるなら再生の前にするとよい。 一方、Playは非同期で動く。 非同期再生処理のタイミングを調整したいなら、スレッドを使うことになる。
475 名前:takasi mailto:sage [2016/01/11(月) 22:51:07.18 .net] 分かりました 頭をすっきりさせるためにお風呂に入ってきます
476 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 22:51:07.43 .net] 今日もよくがんばった。おやすみ。
477 名前:takasi mailto:sage [2016/01/11(月) 22:51:32.48 .net] 本日もありがとうございました!!おやすみなさい
478 名前:takasi mailto:sage [2016/01/12(火) 00:56:08.92 .net] >>454 なんとか完成しました 今までは一つのメソッドに処理書いていたので楽でしたが 今回はメソッド同士の値の受け渡し?などがよく分かってなくて難しかったです 数こなしてなれるしか無いですね
479 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/12(火) 11:11:05.72 .net] >>478 add, commit, pushしてから、Githubでプルリクしなさい。
480 名前:takasi mailto:sage [2016/01/12(火) 16:48:13.54 .net] おはようございます プルリクエストしてみました。ちゃんとできていますでしょうか 体調不良のため途中で離脱するかもしれません
481 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/12(火) 17:14:09.31 .net] 今日の勉強会は休みにします。
482 名前:takasi mailto:sage [2016/01/12(火) 17:20:28.56 .net] 分かりました、自習します
483 名前:仕様書無しさん mailto:sage [2016/01/12(火) 18:49:16.21 .net] 先生、たかし君のペースでいいので是非データベースとの連携もご教示ください!
484 名前:takasi mailto:sage [2016/01/13(水) 13:50:41.92 .net] 病院行こうと思ったら午前で終わってました おはようございます
485 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:10:53.68 .net] ジャンケンゲームの続きだ。 https://github.com/katahiromz/JankenGUI これを適当なフォルダにcloneしてソースを眺めてみよ。
486 名前:takasi mailto:sage [2016/01/13(水) 19:26:21.36 .net] おはようございます 始めます
487 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:32:23.31 .net] Visibleプロパティをfalseにすると非表示になる。 SoundPlayer.Stopで音を止めることができる。
488 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:37:24.49 .net] コードを読んだ感想を述べよ。
489 名前:takasi mailto:sage [2016/01/13(水) 19:47:25.22 .net] 僕のぐっちゃぐちゃなコードに比べるとすごく綺麗にまとまっていて これはどういう動作をするコードなのかひと目で分かります 条件分岐の負けの判定の仕方でelse if ((3 + player_hand - comp_hand) % 3 == 1) を見てこれはすげえと思いました 全体のコード量は少ないですが、すっきりしていて感動しました そして自分にこんな綺麗に書ける自信が無くて胃が痛くなりました
490 名前:takasi mailto:sage [2016/01/13(水) 19:49:19.08 .net] こういうやり方もあるのかと色々発見がありました 以上、小学生並みの感想文でした
491 名前:takasi mailto:sage [2016/01/13(水) 19:52:11.35 .net] あとじゃんけんゲームがなかなかおもしろいです
492 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:57:19.20 .net] その判定は大学数学の剰余類という概念を使っている。 多分、大学一年生で習うだろう。
493 名前:takasi mailto:sage [2016/01/13(水) 20:04:12.87 .net] 初めて聞いた単語で胃が痛くなりました とりあえず頑張ります ちなみに僕は数学は大の苦手です 数学の知識があったほうがどう考えてもいいですね
494 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:04:33.55 .net] 今日はアプリの設定データについて勉強する。 アプリを終了した後でも、データを保存しておきたい場合、 ファイルやレジストリにデータを記録することになる。 レジストリはWindowsが持っている、階層構造を持ったデータベースで あり、ファイルとは異なる。
495 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:10:02.84 .net] 二つのTextBoxをフォームに配置し、さらにOKボタンとキャンセルボタンを置く。
496 名前:takasi mailto:sage [2016/01/13(水) 20:12:34.79 .net] 置きました
497 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:18:30.96 .net] OKボタンをダブルクリックして、次のコードを追加。 var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Takashi\MySoftware"); key.SetValue("Text1", textBox1.Text); key.SetValue("Text2", textBox2.Text); key.Close();
498 名前:takasi mailto:sage [2016/01/13(水) 20:20:17.35 .net] 追加しました
499 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:23:26.62 .net] プログラムを実行してOKを押す。これでレジストリに書き込まれた。 Win+Rキーを押してregeditと入力してEnterキーを押す。 これでレジストリエディターが起動する。 HKEY_CURRENT_USER\Software\Takashi\MySoftwareがあることを 確認せよ。
500 名前:takasi mailto:sage [2016/01/13(水) 20:28:09.63 .net] Tkashi\Mysofrwareとレジストリを確認しました
501 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:31:55.02 .net] 次は読み込みだ。フォームのLoadイベントに次のコードを追加。 var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); textBox1.Text = key.GetValue("Text1"); textBox2.Text = key.GetValue("Text2"); key.Close();
502 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:36:28.82 .net] 文字列リテラルに@が付いているのは\によるエスケープシーケンスを解釈しないためだ。 以前、"\n"は改行を表すと言った。"\t"はタブ文字だ。このように通常、""の中の\は特殊な解釈をする。
503 名前:takasi mailto:sage [2016/01/13(水) 20:41:47.46 .net] オブジェクト型はString型に代入できないと注意されたのでConvert.ToStringしましたが大丈夫でしょうか private void Form1_Load(object sender, EventArgs e) { var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); textBox1.Text = Convert.ToString(key.GetValue("Text1")); textBox2.Text = Convert.ToString(key.GetValue("Text2")); key.Close(); }
504 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:41:56.00 .net] レジストリはシステムの資源を占有するので、サイズの大きなデータを書き込むべきではない。 大きな設定データはファイルに記録する。 ではどこに設定ファイルを書き込めばいいか? 特殊フォルダのAppDataに書き込むのがいいとされる。
505 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:45:29.99 .net] >>503 key.GetValue("Text1").ToString(); でOKだ。
506 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:49:48.52 .net] 特殊フォルダの場所を取得するには次のように書く。 var path = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
507 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:57:53.42 .net] 読み込みされるか実行して確認せよ。 次にレジストリエディタでMySoftwareキーを削除してプログラムを再起動せよ。 例外が発生するはずだ。実はキーが開けないときkeyはnullになる。 nullというのは無効なデータのことだ。
508 名前:takasi mailto:sage [2016/01/13(水) 21:01:26.06 .net] 読み込まれないです! https://i.gyazo.com/f2e5ff48bd5fa2390e783ff8d86d6c9e.png Form1_Loadは初めから存在してなかったので自分で作ったのですがこれが原因でしょうか
509 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:03:06.24 .net] キーが開けないときや作れないときはkey == nullになる。 このまま書き込んだり、読み込もうとすると例外が発生してしまう。 対処法はnullチェックをすることだ。 if (key != null) { ... key.Close(); }
510 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:04:38.96 .net] >>508 それはいったん消してプロパティウィンドウ からイベントを追加せよ。カミナリのアイコンだ。
511 名前:takasi mailto:sage [2016/01/13(水) 21:12:54.68 .net] >>507 例外がスローされるのを確認して >>509n ullチェックで回避しました
512 名前:takasi mailto:sage [2016/01/13(水) 21:19:18.77 .net] あ、読み込みも問題なくできました
513 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:20:52.39 .net] 課題。ジャンケンゲームでの勝ち・負け・引き分けの回数を レジストリに記録するようにせよ。
514 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:22:48.11 .net] アプリ設定に使ったファイルやレジストリキーを消すのは、 インストーラ側で行うことが多い。
515 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:34:51.21 .net] 課題が出来たら、プルリクせよ。残り時間は自習とする。
516 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 22:11:34.19 .net] 質問はありませんか?
517 名前:takasi mailto:sage [2016/01/13(水) 22:19:11.11 .net] 質問はありませんが、値の受け渡しで頭がぐるぐるしてます とりあえずsave_keyメソッドとload_keyメソッドを作りぐっちゃぐちゃやってます頑張ります
518 名前:takasi mailto:sage [2016/01/13(水) 22:45:21.86 .net] えーと、やりたいことは分かっているんですが思考が迷子です 時間がかかりそうなので宿題とさせて下さい えーとプログラミング適正無しでしょうか悲しいです
519 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 23:12:37.34 .net] ヒント: アプリ側で保持するのは、回数が増えた分だ。現在の回数ではない。 レジストリへのアクセスは読み書きを一度に行う。 アプリ側の増分だけレジストリの回数を増やした後でアプリ側の増分をゼロにする。 回数を増やすのは勝敗引き分けが決まったときに行う。 回数の増分はフォーム側ではなくプログラム側で保持する。
520 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 23:16:19.59 .net] おやすみ。身体を冷やすなよ。
521 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:36:18.94 .net] ヘイ、ヨー! 始めっぞ
522 名前:takasi mailto:sage [2016/01/14(木) 20:40:53.10 .net] おはようごじます・・・
523 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:44:14.18 .net] さあーて、どこまでできたかなっ♪
524 名前:takasi mailto:sage [2016/01/14(木) 20:50:08.39 .net] 正直に言いますとまだ出来ていません あまりの出来の悪さに悲しみに暮れ寝て起きたら今です ○にたい
525 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:54:55.82 .net] ヘイ、まずは、三つのint型のメンバー変数を追加するよぉ。 初期値はゼロだぜぃ。 int kachi_count = 0; int make_count = 0; int aiko_count = 0;
526 名前:takasi mailto:sage [2016/01/14(木) 20:56:23.94 .net] 追加しました
527 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:58:47.83 .net] お次は、勝敗判定の箇所を探してみよー。 hantei関数の呼び出しをしている場所があるよね。 ここで判定に応じてカウント変数を1つ加算だよお!
528 名前:takasi mailto:sage [2016/01/14(木) 21:02:23.71 .net] 加算できました
529 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:03:36.91 .net] その後にレジストリのカウント値を更新だ。 CreateSubKeyはキーがなければキーを作成してそれを開く。 あればそのまま開く。 カウント値はGetValueで取得、SetValueで設定だ。 しかしまだ値を設定していないときにGetValueしたらどうなるか?
530 名前:takasi mailto:sage [2016/01/14(木) 21:05:55.97 .net] 例外がスローされます
531 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:17:48.07 .net] >>530 ノーノー、nullが返される。 var value = key.GetValue("KachiCount"); int count = kachi_count; if (value != null) { count += Convert.ToInt32(value); } ...
532 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:20:30.78 .net] そしてcount.ToString()をSetValueしてからkachi_countをゼロにする。 他のカウント変数も同様だ。
533 名前:takasi mailto:sage [2016/01/14(木) 21:23:48.93 .net] どのタイミングでキーを作成しなければいけないのか分からないです
534 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:25:18.15 .net] カウントを表示するのは別のフォームで行う。 新しくフォームを追加だ。 その上にラベルをいくつか追加。 フォームのLoadイベントでレジストリを読み込んでラベルテキストをセット。 OKボタンでフォームを閉じるようにする。
535 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:28:59.98 .net] >>533 いつカウントを更新するかは、自由に決めることができる。 アプリが終了するときか、フォームが閉じたときか、カウンタが更新したときか。 ここではすぐに更新してほしいので、hantei関数が呼ばれた後に レジストリを更新する。
536 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:33:18.31 .net] どうだね? 作れそうかな?
537 名前:takasi mailto:sage [2016/01/14(木) 21:33:36.08 .net] >>534 は private void Form2_Load(object sender, EventArgs e) { var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); label4.Text = key.GetValue("KACHI").ToString(); label5.Text = key.GetValue("MAKE").ToString(); label6.Text = key.GetValue("AIKO").ToString(); } で大丈夫ですよね
538 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:35:57.02 .net] >>537 try/catchしないならkeyとvalueのnullチェックが必要だよ。
539 名前:takasi mailto:sage [2016/01/14(木) 21:36:07.69 .net] レジストリの更新はメソッドを新たに作成してそこでやらせたほうがいいですよね
540 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:37:03.59 .net] >>539 そうだね。
541 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:45:20.04 .net] \MySoftware のところは \JankenGUI にしておこう。
542 名前:takasi mailto:sage [2016/01/14(木) 21:46:11.30 .net] var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); if (key != null) { var value_kachi = key.GetValue("KACHI"); var value_make = key.GetValue("MAKE"); var value_aiko = key.GetValue("AIKO"); if (value_kachi != null) label4.Text = key.GetValue("KACHI").ToString(); if (value_make != null) label5.Text = key.GetValue("MAKE").ToString(); if (value_aiko != null) label6.Text = key.GetValue("AIKO").ToString(); こういうことでしょうか