C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.78277 の関連記事表示

<< 0 >>
■78277  DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/03(Sun) 05:03:41)

    分類:[C#] 

    C#のDataGridViewで一つのセルに複数行表示したく

    dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
    this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

    この様に設定しています。
    次のように行を代入します。
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    string[] s = new string[]{"あいうえお" + Environment.NewLine +
    "かきくけこ",

    "あいうえおかきくけこさしすせそたちつてとなにぬねの" + Environment.NewLine +
    "アイウエオ",

    "あいうえおかきくけこ"};

    for (int x = 0; x < s.Length; x++)
    {
    dataGridView1.Rows.Add(s[x]);
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    しかし、以下の様に表示させたいのですが

    -----------------------------------------------
    あいうえお
    かきくけこ
    -----------------------------------------------
    あいうえおかきくけこさしすせそたちつてとなにぬねの
    アイウエオ
    -----------------------------------------------
    あいうえおかきくけこ
    -----------------------------------------------

    思わぬところ(2行目)で改行されてしまい以下のようになってしまいます。

    -----------------------------------------------
    あいうえお
    かきくけこ
    -----------------------------------------------
    あいうえおかきくけこさしすせそたちつて
    となにぬねの
    アイウエオ
    -----------------------------------------------

    あいうえおかきくけこ

    -----------------------------------------------

    また、3行目は1行なのにも関わらず、前の行の設定に引っ張られて
    行の高さがフィットせず、余白が多くなってしまいます。

    2行目をしっかり、2行で表示し、全ての行の高さを内容に合わせてフィットさせるようにするにはどうしたらよいでしょうか?
    よろしくお願い申し上げます。

    以下に、DataGridViewの他の設定を明記します。
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    //
    // dataGridView1
    //
    this.dataGridView1.AllowUserToAddRows = false;
    this.dataGridView1.AllowUserToDeleteRows = false;
    this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
    this.dataGridView1.ColumnHeadersVisible = false;
    this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    this.Column1,
    this.Column2});
    dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
    dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
    dataGridViewCellStyle2.Font = new System.Drawing.Font("MS UI Gothic", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
    dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
    dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
    dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
    dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
    this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
    this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.dataGridView1.Location = new System.Drawing.Point(0, 0);
    this.dataGridView1.Margin = new System.Windows.Forms.Padding(0);
    this.dataGridView1.Name = "dataGridView1";
    this.dataGridView1.RowHeadersVisible = false;
    this.dataGridView1.RowTemplate.Height = 21;
    this.dataGridView1.Size = new System.Drawing.Size(550, 573);
    this.dataGridView1.TabIndex = 0;
親記事 /過去ログ133より / 関連記事表示
削除チェック/

■78294  Re[1]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/06(Wed) 07:58:16)
    No78277 (綾瀬さとみ さん) に返信
    > C#のDataGridViewで一つのセルに複数行表示したく
    >
    > dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
    > this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    > this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
    >
    > この様に設定しています。
    > 次のように行を代入します。
    > ///////////////////////////////////////////////////////////////////////////////////////////////////////
    > string[] s = new string[]{"あいうえお" + Environment.NewLine +
    > "かきくけこ",
    >
    > "あいうえおかきくけこさしすせそたちつてとなにぬねの" + Environment.NewLine +
    > "アイウエオ",
    >
    > "あいうえおかきくけこ"};
    >
    > for (int x = 0; x < s.Length; x++)
    > {
    > dataGridView1.Rows.Add(s[x]);
    > }
    > ///////////////////////////////////////////////////////////////////////////////////////////////////////
    > しかし、以下の様に表示させたいのですが
    >
    > -----------------------------------------------
    > あいうえお
    > かきくけこ
    > -----------------------------------------------
    > あいうえおかきくけこさしすせそたちつてとなにぬねの
    > アイウエオ
    > -----------------------------------------------
    > あいうえおかきくけこ
    > -----------------------------------------------
    >
    > 思わぬところ(2行目)で改行されてしまい以下のようになってしまいます。
    >
    > -----------------------------------------------
    > あいうえお
    > かきくけこ
    > -----------------------------------------------
    > あいうえおかきくけこさしすせそたちつて
    > となにぬねの
    > アイウエオ
    > -----------------------------------------------
    >
    > あいうえおかきくけこ
    >
    > -----------------------------------------------
    >
    > また、3行目は1行なのにも関わらず、前の行の設定に引っ張られて
    > 行の高さがフィットせず、余白が多くなってしまいます。
    >
    > 2行目をしっかり、2行で表示し、全ての行の高さを内容に合わせてフィットさせるようにするにはどうしたらよいでしょうか?
    > よろしくお願い申し上げます。
    >
    > 以下に、DataGridViewの他の設定を明記します。
    > ///////////////////////////////////////////////////////////////////////////////////////////////////////
    > //
    > // dataGridView1
    > //
    > this.dataGridView1.AllowUserToAddRows = false;
    > this.dataGridView1.AllowUserToDeleteRows = false;
    > this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    > this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
    > this.dataGridView1.ColumnHeadersVisible = false;
    > this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    > this.Column1,
    > this.Column2});
    > dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
    > dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
    > dataGridViewCellStyle2.Font = new System.Drawing.Font("MS UI Gothic", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
    > dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
    > dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
    > dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
    > dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
    > this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
    > this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
    > this.dataGridView1.Location = new System.Drawing.Point(0, 0);
    > this.dataGridView1.Margin = new System.Windows.Forms.Padding(0);
    > this.dataGridView1.Name = "dataGridView1";
    > this.dataGridView1.RowHeadersVisible = false;
    > this.dataGridView1.RowTemplate.Height = 21;
    > this.dataGridView1.Size = new System.Drawing.Size(550, 573);
    > this.dataGridView1.TabIndex = 0;
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78295  Re[1]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/06(Wed) 08:07:36)
    > dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
    上記は仕様でしょうか? 間違いでしょうか?


    ※ 上記の投稿(No.78294)失礼しました。(漢字変換の時 Enter キーを押し間違ったようです。)

記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78296  Re[2]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/06(Wed) 18:50:19)
    石原はるかさんご返信ありがとうございます。

    仕様・間違いといいますか
    改行したくてEnvironment.NewLineを入れているのに
    WrapMode=falseまたはWrapMode=NotSetだと
    改行されないのでtrueにしています。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78301  Re[3]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/06(Wed) 22:04:03)
    No78296 (綾瀬さとみ さん) に返信
    失礼しました、私が勘違いしていたようです。
    
    下記のコードを追加して試して見て下さい。(VBのコードで試したので C# に置き換えて下さい)
    列幅を設定してから行の高さを設定して下さい。(現状ではそのようになっているようですが。)
    
    	Private Sub DataGridView1_EditingControlShowing(sender As Object, e As _
    					DataGridViewEditingControlShowingEventArgs) _
    					Handles DataGridView1.EditingControlShowing
    	  If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then
    			Dim txtbox As DataGridViewTextBoxEditingControl =
    					CType(e.Control, DataGridViewTextBoxEditingControl)
    		txtbox.WordWrap = False
    	  End If
    	End Sub
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78319  Re[4]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/07(Thu) 17:29:11)
    石原はるかさんへ
    下記のようにしてみましたが
    症状は改善されませんでした。

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
    if (e.Control is DataGridViewTextBoxEditingControl)
    {
    DataGridViewTextBoxEditingControl txtbox = (DataGridViewTextBoxEditingControl)e.Control;
    txtbox.WordWrap = false;
    }
    }
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78321  Re[5]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/07(Thu) 18:00:16)
    No78319 (綾瀬さとみ さん) に返信
    > 症状は改善されませんでした。

    念の為、下記をどこか別のところで(表示後に)実施しても同じでしょうか?
    this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

    それでも同じようなら表示前にあらかじめ幅広の列に設定してからデータを表示後に自動列幅設定をするとかしかないのでは。
    私が試した限りでは、うまく改行コード通りに改行されたので
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78324  Re[6]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/07(Thu) 18:51:57)
    石原はるかさん、ご返信ありがとうございます。

    this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

    に関しては最初から設定してあります。
    また、ためしに値を入れた行を挿入した後に

    this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

    この処理を入れてみましたが、結果は変わらずです。

    列幅を大きくしようとwidthを設定しようと思ったのですが
    デフォルトが5なのですが、大きい値を色々と入れてみましたが
    入れても、入れても5に戻ってしまいます。

    ちなみにcolumnとrowのヘッダーを非表示にしているのが関係あるのでしょうか。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78326  Re[7]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/07(Thu) 19:17:15)
    No78324 (綾瀬さとみ さん) に返信
    なんとなく原因が解りました。
    列・行を自動設定のままにしておくと、セルにアクセスした時点で折り返して表示した
    状態での行の自動設定が行われてその後列幅を広げない限り元に戻りません。

    下記を試してみて下さい。

    Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    DataGridView1.ColumnCount = 4
    DataGridView1.RowCount = 5

    DataGridView1.Columns(1).DefaultCellStyle.WrapMode = DataGridViewTriState.True
    DataGridView1.Item(1, 1).Value = "あいうえお" + Environment.NewLine + "かきくけこ"
    DataGridView1.Item(1, 2).Value = "あいうえおかきくけこさしすせそたちつてとなにぬねの" + Environment.NewLine + "アイウエオ"
    DataGridView1.Item(1, 3).Value = "あいうえお" + Environment.NewLine + "かきくけこ"
    DataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells
    DataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells
    DataGridView1.Refresh()
    '一旦 AutoSize で表示後、列か行のどちらかを元に戻しておかないと
    'セル等にアクセスした時に折り返して表示した行の高さに設定されてしまうので
    DataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None
    End Sub
    End Class
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78328  Re[8]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/07(Thu) 21:35:57)
    石原はるかさん、ご返信ありがとうございます。

    やってみたところ、列幅はしっかり折り返されなくなりました。
    しかし、2行の行が1行分しか表示されず、
    2行目が隠れてしまいます。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78329  Re[9]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/08(Fri) 06:08:18)
    No78328 (綾瀬さとみ さん) に返信
    > やってみたところ、列幅はしっかり折り返されなくなりました。
    > しかし、2行の行が1行分しか表示されず、
    > 2行目が隠れてしまいます。

    多分、表示件数が多いために列幅を設定してすぐに行の高さを設定
    すると行の高さが自動設定されない内に高さの固定設定有効になるからだと。

    だったら、最初に列幅だけ自動設定して、完全に設定されてから
    列幅を固定にして行の高さだけ自動設定するように時間差を設けて
    実行するようにすればできるかと思います。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78330  Re[10]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/08(Fri) 08:22:35)
    石原はるかさん、ご返信ありがとうございます。
    まずは初期設定で
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
    として、次に
    //処理
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
    //時間を置いて
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

    としましたら、全てのセルが左上に最初で表示されてしまいました。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78333  Re[11]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/08(Fri) 11:46:46)
    No78330 (綾瀬さとみ さん) に返信
    > としましたら、全てのセルが左上に最初で表示されてしまいました。

    ダメでしたか?

    私の環境では、DataGridView1.Refresh() でも OK だったのですが、下記のように Update() メソッドに変更して
    試して見て下さい。それでもだめならチョットお手上げです。

    DataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells
    DataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells
    DataGridView1.Update()
    DataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.None
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78335  Re[12]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/08(Fri) 12:23:24)
    石原はるかさん。
    ご返信誠にありがとうございます。
    前に教えていただいたRefresh()を忘れてしまいました。

    色々試しましたが

    初期設定で
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

    とし、処理の後

    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
    dataGridView1.Refresh();
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

    こうすることによってうまくいきました。
    ありがとうございます。

    ただ、1行の時、高さが狭すぎて
    特に「g」などは下の丸が半分隠れてしまいます。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78337  Re[13]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 石原はるか -(2016/01/08(Fri) 14:15:48)
    No78335 (綾瀬さとみ さん) に返信

    > ただ、1行の時、高さが狭すぎて
    > 特に「g」などは下の丸が半分隠れてしまいます。

    上揃え 中央揃え 下揃え 等を試して見てもですか?
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78340  Re[14]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/08(Fri) 19:05:36)
    石原はるかさんへ
    ご返信いただき大変ありがとうございます。

    「g」に関しては別件で、私の勘違いでした。
    すいません。

    やっと、完成しました。
    本当にありがとうございます。
記事No.78277 のレス /過去ログ133より / 関連記事表示
削除チェック/

■78341  Re[15]: DataGridViewで予期せぬ所で改行してしまう
□投稿者/ 綾瀬さとみ -(2016/01/08(Fri) 19:06:52)
    解決済みし忘れました。
記事No.78277 のレス / END /過去ログ133より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -