質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

4回答

1195閲覧

C#のプログラムについての初歩的な質問です。

oteyawarakani

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/08/02 09:27

前提・実現したいこと

C#のエラーをなくしたいです。

発生している問題・エラーメッセージ

①現在のコンテキストにfoldernameは存在しません
②現在のコンテキストにtextnameは存在しません
というエラーが出てプログラムが動かなくなっていますが、恥ずかしながらどの行のことを指しているのかわかりません。

該当のソースコード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e) { //practice02よりOK、キャンセルの選択肢 //practice22よりテキストファイルの作成 //テキストの名前を自由に設定可能に //practice13より確認音の再生 System.Media.SystemSounds.Asterisk.Play(); DialogResult dr3; dr3 = MessageBox.Show("カレントディレクトリの" + foldername.Text + "フォルダを作成しますか?", "フォルダの作成", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (dr3 == DialogResult.OK) { if (System.IO.File.Exists(foldername.Text + ".txt")) { //同じ名前のフォルダにある場合エラーメッセージを表示 MessageBox.Show("既に同じ名前のフォルダが存在します。"); } else { { string CurDir = System.IO.Directory.GetCurrentDirectory(); System.Diagnostics.Process.Start(@CurDir); MessageBox.Show(CurDir + "に" + foldername.Text + "フォルダが作成されます。\n フォルダを開いて確認します。"); System.IO.Directory.CreateDirectory(foldername.Text); } } } else if (dr3 == DialogResult.Cancel) //キャンセルボタンを押した場合実行されない MessageBox.Show("キャンセルボタンが押されました"); } private void button3_Click(object sender, EventArgs e) { //practice22より System.Media.SystemSounds.Asterisk.Play(); DialogResult dr2; dr2 = MessageBox.Show("フォルダ内の" + textname.Text + ".txt" + "ファイルを開きますか?", "テキストを開く", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (dr2 == DialogResult.OK) { if (System.IO.File.Exists(textname.Text + "\.txt")) { System.Diagnostics.Process.Start(@System.IO.Directory.GetCurrentDirectory()); System.Diagnostics.Process p = System.Diagnostics.Process.Start("notepad.exe", System.IO.Directory.GetCurrentDirectory() + textname.Text + ".txt"); } else { //ファイルが見つからない場合エラーメッセージを表示 MessageBox.Show("ファイルが見つかりませんでした。"); } } else if (dr2 == DialogResult.Cancel) { MessageBox.Show("キャンセルボタンが押されました"); } } private void button4_Click(object sender, EventArgs e) { string TextFileName = System.IO.Directory.GetCurrentDirectory() + textname.Text + "\.txt"; System.IO.StreamWriter textFile; System.Diagnostics.Process.Start(@System.IO.Directory.GetCurrentDirectory()); if (System.IO.File.Exists(textname.Text + ".txt")) { MessageBox.Show("ファイルが見つかりました。ファイルにテキストボックスの文字列を書き込みます。"); textFile = new System.IO.StreamWriter(textname.Text + ".txt"); textFile.Write(textBox1.Text); textFile.WriteLine(); textFile.Close(); } else { MessageBox.Show("ファイルが見つかりませんでした。"); } } private void button1_Click(object sender, EventArgs e) { string TextFileName = System.IO.Directory.GetCurrentDirectory() + textname.Text + "\.txt"; System.IO.StreamWriter textFile; System.Media.SystemSounds.Asterisk.Play(); DialogResult dr; //practice02よりOK、キャンセルの選択肢 //practice31よりテキストファイルの作成 //テキストの名前を自由に設定可能に //practice13より確認音の再生 dr = MessageBox.Show(System.IO.Directory.GetCurrentDirectory() + "フォルダに" + textname.Text + ".txtを作成しますか?", "テキストの作成", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (dr == DialogResult.OK) { if (System.IO.File.Exists(textname.Text + ".txt")) { //同じ名前のテキストがフォルダにある場合エラーメッセージを表示 MessageBox.Show("既に同じ名前のテキストが存在します。"); } else { //同じ名前のテキストがフォルダにない場合テキストを作成 MessageBox.Show(System.IO.Directory.GetCurrentDirectory() + "フォルダに" + textname.Text + ".txtを作成します。\n フォルダを開いて確認します。"); System.Diagnostics.Process.Start(@System.IO.Directory.GetCurrentDirectory()); textFile = System.IO.File.CreateText(textname.Text + ".txt"); textFile.Close(); } } else if (dr == DialogResult.Cancel) { //キャンセルボタンを押した場合実行されない MessageBox.Show("キャンセルボタンが押されました"); } }

試したこと

補足情報(FW/ツールのバージョンなど)

visualstudio2015

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/02 09:31

foldername がある行のことです。エラーメッセージに行番号が入っているはずです。
y_waiwai

2019/08/02 09:47

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答4

0

TextBoxは作成しているのですが、

デザイナ画面でフォームに TextBox をツールボックスからドラッグ&ドロップしただけで(そうすると textBox1, textBox2 という名前になるはず)、質問にアップしてあるコードは本などからコピペしてそれに foldername とか textname という名前が使われているので、今のエラーになっているということですか?

名前の付け方が分かりません

上の想像が合っていればデザイナ画面で以下のようにしてみては?

イメージ説明

投稿2019/08/02 10:06

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

TextBoxの名前の付け方ですが、フォームのデザイン画面を出して、TextBoxをクリックして、
プロパティウィンドウの(Name)の項目に名前入れましょう

投稿2019/08/02 09:52

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コードを貼り付けるときは MarkDown を使ってください。
で…… Visual Studio なら、エラーメッセージクリックすればその該当行に飛ぶはずですけどね?

どこが悪いかというと、foldername.Text や textname.Text は、おそらくフォーム上にあるはずのテキストボックスです。
その名前のテキストボックスを配置し忘れてますね。
※というか、もしかしてボタン3つも配置してないんじゃ……?

何かの本を読みながらやられたのかと思いますが、今一度見直して一から作り直した方がいいでしょう。

投稿2019/08/02 09:34

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

foldername、textnameという名前のTextBox(多分)を作成していないのでは?
イメージ説明

投稿2019/08/02 09:32

編集2019/08/02 09:49
YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oteyawarakani

2019/08/02 09:40

ご回答いただきありがとうございます。 TextBoxは作成しているのですが、名前の付け方が分かりません(泣)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問