マルシェル新規登録で5000円分当たる

テキストボックスでmultilineをtrueにした場合
改行が¥nでは出来ずに
Environment.NewLineを使わなければ改行できませんでした。
何故だか教えていただきたいです。

A 回答 (5件)

改行コードは環境依存なので


Environment.NewLineを使う事はむしろ正しいと思います。

では何故"\r\n"が駄目かですが私の環境では問題ないのでわかりません。
OSはWindowsXpでしょうか?

"\r\n"で改行できないマシンで
string test = Environment.NewLine;
char[] chArray = test.ToCharArray();
としchArrayにどういう文字コードが入っているのか
調べてみれば原因がわかると思います。
    • good
    • 0
この回答へのお礼

OSはWindowsXpです。

OSによってできないとの事ですがWindowsなのに出来なかったのは不思議です。。。
ありがとうございました。

お礼日時:2007/06/06 20:01

★回答者 No.3 です。


・改行について補足します。
 Windows系は『\r\n』
 Unix系は『\n』
 Mac OSは『\r』
 がそれぞれ改行コードになります。
・『\n』、『\r\n』で上手く改行できない=Mac OS ですか?
 もしも、Mac OS ならば『\r』のキャリッジ・リターンのコードが改行になります。
・以上。おわり。→ちなみに OS は何でしたか?
    • good
    • 0
この回答へのお礼

ちなみにWindowsXpでした。

ありがとうございました。

お礼日時:2007/06/06 20:03

★アドバイス


・一般に Windows OS では \r\n の2文字です。
 下の C# の参考リンクを貼っておきます。
 http://dobon.net/vb/dotnet/string/controlchars.h …→『改行、タブ文字などの定数』
 http://dobon.net/vb/dotnet/string/newline.html→『文字列の途中で改行する』
 http://jeanne.wankuma.com/tips/string/constant.h …→『改行コードなどの定数を使用する』
・以上。今後の参考に!

参考URL:http://www.atmarkit.co.jp/fdotnet/csharp_abc2/in …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
\r\nも試したんですがダメだったんですよね。
ネットでも結構探したんでこちらのURLも見てました^^

今までコード書いてる際\nでも使えてたので
テキストボックス内だけが何故か使えなかったので疑問に思いました。

難しいですね。。。

お礼日時:2007/05/24 21:05

Windowsですから


「¥n」(lf)ではなく「¥r¥n」(cr+lf)では?

C#でtextBox1.Text += "\r\n";
で改行できましたよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
\r\nでも試したんですがダメだったんですよ。

環境の違いみたいなんですが。。。

すべてに対応しているEnvironment.NewLineで使っていきます。

お礼日時:2007/05/24 20:59

もともとWindowsの改行コードって\nじゃないですからね。



\r\nでもだめでした?
    • good
    • 0
この回答へのお礼

ありがとうございます。
\r\nでもダメだったんです。
使う物により無理な場合があるようですね・・

お礼日時:2007/05/24 20:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC#で共有変数の定義をするには

C#で共有変数の定義をするには、どうしたらよいでしょうか。具体的には、起動パラメータで、任意の文字列(3~4バイト)を渡して、C#アプリケーションを、起動し、プログラムの任意の場所で、そのパラメータを参照したいと考えています。起動パラメータの受け取りは、できるのですが、そのパラメータを、プログラムのどこからも参照できる領域(ここの定義方法が不明)に格納するには、どうしたらよいでしょうか。(2重起動を許す前提です。実行時に1つの目のプログラムにはパラメータ"XYZ"を渡し、2つ目のプログラムを起動時にはパラメータ"ABCD"を渡し、その値により、プログラムの動作を制御したいと思っています)
Windows-xp visual-studio2008 C#でwindowsアプリケーションを作成しています。

Aベストアンサー

namespace test1
{
  static class Program
  {
    /// <summary>
    /// アプリケーションのメイン エントリ ポイントです。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      if (args.Length > 0)
      {
        strArg = args[0];
      }
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new Form1());
    }
    // ここに記述
    static public string strArg = null;
  }
}

メインクラスのメンバーとしてスコープが有効な場所に記述します

namespace test1
{
  static class Program
  {
    /// <summary>
    /// アプリケーションのメイン エントリ ポイントです。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      if (args.Length > 0)
      {
        strArg = args[0];
      }
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(n...続きを読む

QC#にて別クラスの関数を使いたい

C#にて、別クラスの関数を使用する方法を教えてほしいです。

下記のような、構造体を受け取るメソッドを作りました。

*****************************
private struct MyPoint
{
public int x;
public int y;
}

private void proc1(MyPoint pt)
{
MessageBox.Show("座標:" ; pt.x + "," + pt.y + "実行結果");
}

private void button1_Click(object sender ,System.EventArgs e)
{

MyPoint pt;
pt.x = 10;
pt.y = 20;
proc(pt);
}
*****************************

別のフォームのクラスから、proc1を呼び出したいのですが、やり方がわかりません。
どうか、教えてください。

Aベストアンサー

同じ定義をしたとしても別の名前空間に書いた構造体は同一とはみなされません。

呼び出し先クラスでの構造体を private では無く、public で宣言して下さい。

呼び出し元では、

MyClass.MyPoint pt;

のようにして実体を作ります。

Q【C#】textBoxの指定行のデータを削除

凄く基本的なことかもしれないのですが色々検索しても見つからなかったので質問させてください。

Visual C# 2010を使っています。
textBoxのMultiLineをtrueにして複数行書けるようにしています。

そこで、プログラム上で指定の行を削除したり書き換えたりする方法を知りたいです。

指定の行のデータを取得する方法はわかったのですが、応用できませんでした。
MessageBox.Show(textBox1.Lines[0].ToString());
で、1行目のデータをMessageBoxで表示できました。

なので、以下のように書けば削除できるかと思いましたがダメでした。
textBox1.Lines[0] = "";
もしくは
textBox1.Lines[0].Remove(0);

目的は、以下のような複数行のデータがあった場合に指定の行を消すといったことです。

1234
5678
9012

で、例えば、2行目を消して

1234
9012

としたいです。

textBox1.Text = textBox1.Text.Replace(textBox1.Lines[0], "");
とやって置き換えることはできるのですが、同じデータがある場合に全て置き換わってしまうのと、改行が残ってしまうので微妙です。

よろしくお願いします。

凄く基本的なことかもしれないのですが色々検索しても見つからなかったので質問させてください。

Visual C# 2010を使っています。
textBoxのMultiLineをtrueにして複数行書けるようにしています。

そこで、プログラム上で指定の行を削除したり書き換えたりする方法を知りたいです。

指定の行のデータを取得する方法はわかったのですが、応用できませんでした。
MessageBox.Show(textBox1.Lines[0].ToString());
で、1行目のデータをMessageBoxで表示できました。

なので、以下のように書けば削除できるかと思...続きを読む

Aベストアンサー

> ありがとうございます。実行してみたのですが
> エラーで動きませんでした(汗)
> lines.Remove(1);に対してのエラーなのですが

大変申し訳ございません、間違ったやつで投稿してし
まいました。正しくはこうです。

List<string> lines = new List<string>(textBox1.Lines);
lines.RemoveAt(1); // 2行目削除
textBox1.Text = String.Join("\r\n", lines);

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

QC# ReadOnlyのTextBoxで

お世話になります。

C#でテキストボックスを、ReadOnlyで配置する際、
フォーカスが移るとカーソル(キャレット)が表示されてしまいます。

過去ログなどで調べた結果、WindowsAPIを使うしかないと
過去の情報にはあったのですが、この問題は.Netの最新の
4.5(?)現在でも、それに見合ったメソッドは実装されていませんか?

今でもまだ、APIを使用しなければ駄目でしょうか。

よろしくお願いします。

Aベストアンサー

されていません。
無効であることと意味が異なりますので。

大体日本だと、こういうのがありますよね。
 ・Enabled=falseでいいじゃん
  ⇒背景色、文字色が濃くなって、見辛いのでNG

 ・ReadOnly=true、TabStop=falseでいいじゃん
  ⇒背景色変わってほしくない、マウスでフォーカスがあたるのでNG

 ・ラベルで表現すればいいじゃん
  ⇒情報のコピーを行うことができなくなるのでNG

よほど神経質でない限り、どちらかでいいのでしょうが、いちいちどうでもいい細かいところに
拘りたがります。
そういうの、ある特定条件下において入力可能/不可能が切り替わる時に、大変拘りだすと
思います。


結論は自作するしかありません。

WindowsAPIで実現する方法論は知りませんでしたが、私はOnReadOnlyChangedをオーバーライドして
コンポーネントを自作しましたよ。
加えて、ReadOnlyFocusApplyプロパティみたいなのを作って、trueならただのReadOnly状態、
falseならラベルで表現する、とかってしました。

先に記した状態3つがあるわけですが、ユーザーがどのレベルまで求めているのかによって
対応策が異なると思います。
⇒フォーカスが遷移しないのにWindowsの基本操作に従った手順でコピーは行いたいなんてのは
 ムリなので。

されていません。
無効であることと意味が異なりますので。

大体日本だと、こういうのがありますよね。
 ・Enabled=falseでいいじゃん
  ⇒背景色、文字色が濃くなって、見辛いのでNG

 ・ReadOnly=true、TabStop=falseでいいじゃん
  ⇒背景色変わってほしくない、マウスでフォーカスがあたるのでNG

 ・ラベルで表現すればいいじゃん
  ⇒情報のコピーを行うことができなくなるのでNG

よほど神経質でない限り、どちらかでいいのでしょうが、いちいちどうでもいい細かいところに
拘りたがります。
そうい...続きを読む

Qテキストボックスに改行を含む値を表示する場合

テキストファイルより1行ずつ値を改行「chr(13)」でつなげて取得し、それを
テキストボックスに表示させたいのですが、そのまま値をテキストボックスの
textプロパティに設定すると、改行が「・」で表示され改行されていません。
テキストボックスのプロパティでMultiLineもTrueにしてあるのですが、これは
無理なことなのでしょうか?
一行ずつ取得してテキストボックスに表示する際に改行を設定していくしかない
のでしょうか?
詳しい方いらっしゃいましたらご教示ください。
よろしくお願いいたします。

Aベストアンサー

お疲れ様です。

では、これでどうですか?

例)

  Dim strText As String

  '// 元の文字
  strText = "AAA" & Chr(13) & "BBB"

  '// Cr を CrLf に変換
  '// Text1.Text = Replace(strText, Chr(13), Chr(13) & Chr(10)) と同じ意味
  Text1.Text = Replace(strText, vbCr, vbCrLf)


strText をファイルから読み込んだものとして考えるといいと思います。
お試しください。

間違っていたらごめんなさい。

QC# ログイン画面からメイン画面への画面遷移について

C# ログイン画面からメイン画面への画面遷移について

C#での画面遷移に関する質問です。
ログイン画面からメイン画面に遷移する場合、どの様な方法で遷移すれば良いのか
迷っています。

現状では以下の方法で遷移していますが、より適切な方法をご存じの場合
ご教示下さい。

(1)Program.csにおいてApplication.Run(new LoginDialog())で
ログイン画面を表示

(2)ログインボタンクリックメソッドでログイン成功時、
メイン画面インスタンスを生成・表示し、ログイン画面を非表示。
(後でログイン画面を再表示することがある為)

---------------------------------------------------------------------
private void LoginButton_Click(object sender, EventArgs e)
{
   /* ログイン処理 */

   //ログイン成功時
   //メイン画面インスタンス生成
   MainForm mainForm = new MainForm();
   //ログイン画面インスタンスを代入
   mainForm.loginForm = this;
   //メイン画面表示
   mainForm.Show();
   //ログイン画面非表示
   this.Visible = false;
}
---------------------------------------------------------------------

また上記の方法だとメイン画面を閉じても、アプリケーションは終了しない為
メイン画面の閉じるボタンを押した場合に以下の処理を行っています。

---------------------------------------------------------------------
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
   //ログイン画面クローズ
   loginForm.Close();
}
---------------------------------------------------------------------

以上、宜しくお願いします。

C# ログイン画面からメイン画面への画面遷移について

C#での画面遷移に関する質問です。
ログイン画面からメイン画面に遷移する場合、どの様な方法で遷移すれば良いのか
迷っています。

現状では以下の方法で遷移していますが、より適切な方法をご存じの場合
ご教示下さい。

(1)Program.csにおいてApplication.Run(new LoginDialog())で
ログイン画面を表示

(2)ログインボタンクリックメソッドでログイン成功時、
メイン画面インスタンスを生成・表示し、ログイン画面を非表示。
(後でログイン画面を再表示す...続きを読む

Aベストアンサー

#2です。
最初にログイン画面のみを表示したいなら
メイン画面のForm_menu_Load(loadイベント処理)
の中で、ログイン画面をモーダル表示し、
NGならメイン画面のcloseのほうがよいかも知れません。

QC#のループでtextboxに値を入れる方法

Nameが

textbox1
textbox2
...
textbox10

と10個のtextboxがあったとして、

このそれぞれのtextに値を入れたいのですが、
1個ずつ書くのではなく、forとかで入れることは出来ますか?

たとえば以下のように、ループで○の部分を変更していくことは可能なのでしょうか?
for (int i=1; i<=10; i++)
{
textbox○.text = i.ToString();
}


よろしくお願いします。

Aベストアンサー

>基本的にはボタンのクリックイベントの中に書いています。

こちらでは問題ありませんけど…なにが 違うんですかねぇ…。

>フォームのインスタンスで実行するなら、

インスタンスではなくコンストラクタでした。
まぁ、InitializeComponent()を実行した後であれば、可能な……ハズなんですけど。

半角での名前は、大文字小文字は区別しないで動作してくれるようですが、
いわゆる全角と半角は区別するでしょうから、その辺りの違いですかねぇ……。

QC# インスタンスの破棄

C#でインスタンスの破棄を明示的に行いたいのですが、
実際の開発現場では、どのように行っているのでしょうか?

自分で調べると「ガベージコレクタ」が暗黙的に行っているようですが明示的には行わないのが普通なのでしょうか?
もしくは、「Dispose」を使用して明示的に行うのが普通なのでしょうか?

実際に開発されている方からすると簡単な事かもしれませんが教えて頂けると助かります。

以上ですが、よろしくお願いいたします。

Aベストアンサー

結論から言うと、どちらでも良いです。
できれば生成から破棄まで考えて開発できると良いですね。

ガベージコレクションが実行されることで自動開放されますから、
一切.close()や.dispose()を使わなかったとしてもプログラムが
不正終了してしまう事はほとんどありません。

実際の開発では使わなくなったものを使わなくなった時点で
明示的に破棄することが多いです。正確には明示的に破棄するもの、
明示的に破棄しないもの、の2種類に分類しています。

例えばファイルを読み書きするストリーム系のオブジェクトや
データベースとのコネクションなどです。これは開発会社や
開発チーム、案件によって若干違っていて、徹底するところや
適当なところもあります。個人的には徹底したい派ですが。。。

ガベージコレクションが発生するとプログラムの実行動作が
遅くなり、また瞬間的に大きな負担がかかることがあります。
そのため全てをガベージコレクタに任せるのではなく、
明示的に開放できるもの、メモリを大量に消費するものは
その都度、適切に開放していくことで処理効率が良くなります。

プログラミング関連の調べ物で、サンプルソース等を見ることが
あるかと思います。この時サンプルで明示的に開放していたら、
それは明示的に開放したほうが良いもの、と思いましょう。
これだけでもステップアップになりますね。

結論から言うと、どちらでも良いです。
できれば生成から破棄まで考えて開発できると良いですね。

ガベージコレクションが実行されることで自動開放されますから、
一切.close()や.dispose()を使わなかったとしてもプログラムが
不正終了してしまう事はほとんどありません。

実際の開発では使わなくなったものを使わなくなった時点で
明示的に破棄することが多いです。正確には明示的に破棄するもの、
明示的に破棄しないもの、の2種類に分類しています。

例えばファイルを読み書きするストリーム...続きを読む

Q同じソリューション内の別のプロジェクトのメソッド呼び出し

同じソリューション内の別のプロジェクトのメソッド呼び出し

お世話になっております。
Visual Studio でC#で開発をしております。
初心者です。

同じソリューション内にある別のプロジェクトのメソッドを呼び出す方法は
どの様にしたら宜しいのでしょうか。
下記の様に記述しましたら、
「静的でないフィールド、メソッド、またはプロパティ ~省略~ で、
 オブジェクト参照が必要です」と言うエラーが出てしまいます。
何か根本的に間違っているのかも知れません。

何卒、ご教授頂きたく宜しくお願い致します。

        記

呼び出し側
private void button1_Click(object sender, EventArgs e)

  呼び出し先のプロジェクト名.クラス名.メソッド名();
 }


呼び出される側
namespace プロジェクト名

public class クラス名

   メソッド名()
   {
     処理内容
    }
  }
 }

Aベストアンサー

ソリューション エクスプローラにおいて、呼び出し側のプロジェクト ツリーの「参照設定」を右クリックして、「参照の追加」を実行、ダイアログの「プロジェクト」タブにおいて、呼び出される側のプロジェクトを選択してOKを押してください。
Visual C#のインテリセンスが正常に機能し始めれば設定が成功しています。

なお、参照設定の追加により、参照されるアセンブリは参照するプロジェクトの出力フォルダに自動的にコピーされるようになります。
また、被参照アセンブリのプログラム デバッグ データベース ファイル(.pdb)も自動的にコピーされるので、被参照側のソースにブレークポイントを置いて参照側でデバッグを開始すると、きちんとブレークポイントで停止してくれます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング