• ベストアンサー

DataGridViewの各セル幅を自由に決め、その幅で固定したい

いつもお世話になっとります。 表示する文字列の長さに応じてセル幅を変えるのは DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells これで可能ですよね。 DataGridViewの各セルの表示内容を、文字列の長さに関わらず、予め決められた幅で表示したいのですがどのように書けばいいのでしょうか。 .NET環境です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

デザイン時にDataGridViewのcolumnsのコレクションの列のwidthで設定する。 DataGridView1.Columns(?).Width = *** で設定する。 ?は0からの番号か列名

noname#45614
質問者

お礼

解決しました。 ありがとうございます^^

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DataGridViewのセルのItem設定につい

    DataGridView内にコンボボックスのカラムを設定しました。 下記のサイトを参考にしました。 http://dobon.net/vb/dotnet/datagridview/comboboxdropdownstyle.html 入力した内容をカラム単位ではなく、セル単位で追加したかったため、 CellValidatingメソッドを下記の通り一部変更しました。 //CellValidatingイベントハンドラ private void DataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { DataGridView dgv = (DataGridView)sender; //該当する列か調べる if (dgv.Columns[e.ColumnIndex].Name == "sComboColumn" && dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn) { //DataGridViewComboBoxColumn cbc = // (DataGridViewComboBoxColumn)dgv.Columns[e.ColumnIndex]; // // ↓cellへ変更 // DataGridViewComboBoxCell cbc = (DataGridViewComboBoxCell)dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; //コンボボックスの項目に追加する if (!cbc.Items.Contains(e.FormattedValue)) { cbc.Items.Add(e.FormattedValue); } //セルの値を設定しないと、元に戻ってしまう dgv[e.ColumnIndex, e.RowIndex].Value = e.FormattedValue; } } コンボボックスに入力し、EnterやTabを押したタイミングでコンボボックスのリストに、 入力した文字列が追加されます。また、入力した文字列がセルに表示された状態になります。 しかし、その後同じセルに文字列を入力した場合、リストに文字列が追加されますが、 セルに表示される文字列はその前に入力された文字列のままです。 どのようにすれば入力後のセルの内容を設定できるかご存じの方がいれば ご教授いただきたいです。

  • エクセルでセル幅で折り返して表示される

    エクセルで、セルに文字を入力して確定すると、 セルの幅よりも長い文字列を入力すると、 自動的に折り返して表示される場合があります。 セルの幅より文字列が長いとき、 必ず折り返されるというのではなく、 折り返して表示される場合があるのです。 どのようなとき折り返されるのでしょうか? また、折り返されないようにするにはどうすればよいのでしょうか? ちなみに、 そのセルの右隣のセルは空欄です。 ご存知の方、よろしくお願いいたします。

  • セルの幅

    エクセルのセルの幅の表示方法についてお聞きします。 列や幅の表示がピクセルですが、それをcmで表したい場合はどのようにすればいいのですか?

  • DataGridViewで列、行、セルの選択

    [環境] Windows7 Professional Visual Studio 2010 Professional お世話になります。 上記環境下にて、DataGridViewを用いたプログラムを 作っております。 そこで、タイトルの件なのですが DataGridViewの一番左(行ヘッダー)をクリックすると行選択、 一番上(列ヘッダー)をクリックすると列選択、 セルをクリックするとセル選択できるようにしたいと思っています。 しかし、DataGridViewのセル選択はSelectionModeという プロパティで制御しているようでして、以下の5種類の選択方法しかないようです。 (1) CellSelect 1 つ以上の個別のセルを選択できます。 (2) FullRowSelect 行のヘッダーまたは行内のセルをクリックすることによって行全体が選択されます。 (3) FullColumnSelect 列のヘッダーまたは列内のセルをクリックすることによって列全体が選択されます。 (4) RowHeaderSelect 行のヘッダー セルをクリックすることによって行が選択されます。個別のセルは、そのセルをクリックすることによって選択できます。 (5) ColumnHeaderSelect 列のヘッダー セルをクリックすることによって列が選択されます。個別のセルは、そのセルをクリックすることによって選択できます。 要するに、 (1)…セル選択のみ可能 (2)…行選択のみ可能(セルクリック時は行選択扱い) (3)…列選択のみ可能(セルクリック時は列選択扱い) (4)…行選択とセル選択のみ可能 (5)…列選択とセル選択のみ可能 ということなので、私の望む、 ・行選択と列選択とセル選択が可能 という制御は無理なのでしょうか。 ご存知の方いましたら、ご教示の程お願い致します。

  • 【datagridview のDataSourceでdatagridv

    【datagridview のDataSourceでdatagridviewにデータを表示して、URLをハイパーリンクで表示する。】 いつもお世話にになります。 さて、DBにテーブルがあり、それにはひとつのカラムしかないと仮定します。そのカラムの内容はURL(例:http://www.okwave.jp)です。そのテーブルをDataSourceに設定してdatagridviewに表示する事はできました。しかし、このURLはハイパーリンクではないので、クリックしてもブラウザに自動的に表示されません。 どうにか、以下の方法で、セルの文字列ををハイパーリンクとして設定をする事ができましたが、どうやらこれの方法は新しくカラムを追加をしてしまうようです。(.addメソッドでカラムを追加してするようです。)自分が実現したいのでは、すでにあるカラムをハイパーリンクにしたいのです。 DataGridViewLinkColumn dgvlc1 = new DataGridViewLinkColumn(); dgvlc1.DataPropertyName = "link"; dgvlc1.HeaderText = "URL"; dgvlc1.Width = 400; dataGridView1.Columns.Add(dgvlc1); DataSourceを使ってdatagridviewにデータを表示した後、ハイパーリンクにする方法はあるのでしょうか? よろしくお願い致します。

  • DataGridView HeaderText の取得

    いつも参考にさせて頂いてます。 DataGridViewで、各セルを選択された時の HeaderTextの文字列の取得を行いたいのですが、 なかなか参考資料にたどりつけずにいます。 アドバイスをお願いします。

  • DataGridViewで指定したセルに書き込み

    こんばんは。 VB2008のDataGridViewで指定したセルに書き込みをする方法はありますか? 例えば(2,1)と指定して1行目2列目に「Hello」と書き込む感じです。 どなたか知っている人が教えてください。

  • セルの幅を小さくしたい

    セルの幅を小さくしようとすると、その列全てが小さくなってしまい ます。そのセルのみ、幅を小さくするにはどうすればよいのでしょうか

  • DataGridViewで…

    初めまして、VB2005初心者のココと申します。 今、VB2005を使い開発しているのですが、詰まってしまいました。 初心者の為、くだらない内容かも知れませんが、ご教授よろしくお願いいたします。 セルに入力されたコードを元にDBから名称を抽出し、名称欄(セル)に表示するプログラムを作っています。 コードを入力し、セルからフォーカスが無くなった際に自動的に名称を表示させたいのですが、うまく表示されず、 現在は、別のセルから戻った後、フォーカスが移動されると表示されるような感じになってしまっています。 フォーカスが離れた際に、表示させればいいと思うのですが、どのようにすればいいのかよく分からず困っております。 今は、CellLeaveを使用しています。 Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles DataGridView1.CellLeave 後、名称取得の際はこんな感じにしています。 名称取得(Val(DataGridView1(1, DataGridView1.CurrentCell.RowIndex).Value)) ※1がコードを入力する列になります。 よろしくお願いいたします。

  • セルの幅を1行目の文字に合うように設定したい

    Excelの幅の調整について質問させてください。 セルに記入されている文字の長さに合わせてセルの幅を設定するとき、列の間(A列とB列の間の境界線とか)をダブルクリックして併せています。 しかし、これでは、1行目に10文字、2行目に1000文字記入した場合、長いほうの1000文字に合わせて列の幅が設定されてしまいます。 私は1行目を表題にしているため、この列の幅は1行目に記入されている文字列の長さに合わせて設定したいと考えています。 2行目以降にどんな長い列が入れられていても、1行目に記入されたセルの文字列長に合わせてセルの大きさを調整する方法はないですか? 今は目算で設定を行っているのですが、この法はアバウトなため、自動で調整してもらいたいのですが。

このQ&Aのポイント
  • 本日、自分は車で相手が小学6年生の自転車で物損事故を起こしてしまいました。今回は物損で済んで良かったですが、事故の状況や自分の考え方について詳しく説明します。
  • 交差点での事故で、自転車が突っ込んできてバンパーに傷ができました。子供は怪我をしなかったようですが、相手の親御さんとの話し合いが必要です。
  • 保険で修理するか実費で修理するか悩んでいます。相手の自転車には保険が入っていないため、実費で修理する方が安くなる可能性もあります。保険屋に相談して適切な判断をしましょう。
回答を見る