none
DataGridViewタスクの「列の追加」の画面崩れ RRS feed

  • 質問

  • お世話になります。どなたかご存じであれば教えて頂きたく、質問させて頂きました。

    VisualStudio2015なのですが、既存プロジェクトのDataGridViewタスクの「列の追加」で列を追加しようとしたところ、

    以下URL画像

    http://gazo.shitao.info/r/i/20170804145200_000.png

    のように、左部分の幅が細すぎて、列の追加ができなくなってしまいました。

    (以前までは普通に追加できていましたが、、、特に意図的に設定変更はした覚えはないのですが、、、)

    当画面の幅を初期値に戻す方法を教えて頂きたく、よろしくお願いします。

    (VisualStudioの修復、アンインストールして再インストールしても、同じ状態で、

     新規プロジェクトにDataGridViewタスクをあらたに配置しても同じ状態で表示されてしまいます。。。)

    2017年8月4日 5:56

回答

  • DataGridViewのデザイン時の処理はSystem.Design.dllに定義されていて、ダイアログの表示も行ってます。
    そのダイアログはデザイナのスレッドのUICultureに応じてリソースを読み込んで言語ごとに表示が変更されます。

    なので、以下のようなコンポーネントをビルドしてフォームに貼りつけて、カルチャを例えばen-usに変更した状態で、DataGridViewの右上の小さい▲から列の追加を行うと英語(標準)のダイアログで表示してくれるはずです。

    public class CultureChanger : System.ComponentModel.Component
    {
        [System.ComponentModel.Description("デザイナ上のスレッドのカルチャ")]
        [System.ComponentModel.DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public System.Globalization.CultureInfo Culture
        {
            get
            {
                return System.Threading.Thread.CurrentThread.CurrentUICulture;
            }
            set
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = value;
            }
        }
    }

    カルチャをen-usに変更して表示が崩れない場合は、日本語リソースがおかしくなっていると考えられます。

    たとえば、4.6と4.7のアセンプリではレイアウトが少し異なっているため、リソースとバージョンが合わないと表示が崩れます。

    C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Design\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Design.dll

    C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Design.resources\v4.0_4.0.0.0_ja_b03f5f7f11d50a3a\System.Design.resources.dll
    のファイルバージョンが一致しているか確認してみてください。
    一致していないなら一致するように日本語のLanguagePackを適用すれば治るかもしれません。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク kk777kk 2017年8月7日 5:08
    2017年8月7日 3:17

すべての返信

  • 関係ない気がするのですが...

    ウィンドウメニューのウィンドウレイアウトのリセットをしてみてはどうでしょうか?

    2017年8月4日 6:35
  • ご返信ありがとうございます。また返信が遅くなり申し訳ありませんでした。

    頂いたアドバイスをためしてみましたが、改善されませんでした。

    (VS2015で、本件発症し、VS2015をアンインストールしてVS2017を新規インストールしても

     同様の事象が発生してしまっているので、レジストリ関係が怪しそうですが、、、)


    2017年8月7日 1:22
  • アンインストールはどのようにされたのでしょうか?
    VisualStudioUninstallerを使うとレジストリも削除してくれるようなので、もし試されていなければ試される価値があるかもしれません。

    VisualStudioUninstallerを使ってVisual Studio 2015をアンインストールしてみた
    http://blog.shibata.tech/entry/2017/03/12/043451


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年8月7日 1:54
    モデレータ
  • DataGridViewのデザイン時の処理はSystem.Design.dllに定義されていて、ダイアログの表示も行ってます。
    そのダイアログはデザイナのスレッドのUICultureに応じてリソースを読み込んで言語ごとに表示が変更されます。

    なので、以下のようなコンポーネントをビルドしてフォームに貼りつけて、カルチャを例えばen-usに変更した状態で、DataGridViewの右上の小さい▲から列の追加を行うと英語(標準)のダイアログで表示してくれるはずです。

    public class CultureChanger : System.ComponentModel.Component
    {
        [System.ComponentModel.Description("デザイナ上のスレッドのカルチャ")]
        [System.ComponentModel.DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public System.Globalization.CultureInfo Culture
        {
            get
            {
                return System.Threading.Thread.CurrentThread.CurrentUICulture;
            }
            set
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = value;
            }
        }
    }

    カルチャをen-usに変更して表示が崩れない場合は、日本語リソースがおかしくなっていると考えられます。

    たとえば、4.6と4.7のアセンプリではレイアウトが少し異なっているため、リソースとバージョンが合わないと表示が崩れます。

    C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Design\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Design.dll

    C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Design.resources\v4.0_4.0.0.0_ja_b03f5f7f11d50a3a\System.Design.resources.dll
    のファイルバージョンが一致しているか確認してみてください。
    一致していないなら一致するように日本語のLanguagePackを適用すれば治るかもしれません。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク kk777kk 2017年8月7日 5:08
    2017年8月7日 3:17
  • ご返信ありがとうございます。

    上記のアンインストーラーを使い、再インストールしてみましたが、状況に変化はありませんでした。

    取り急ぎ、ご報告までです。

    2017年8月7日 5:02
  • ご返信ありがとうございます。

    上記を参考に、

    ・英語の言語パッケージをダウンロード

    し、

    ・「Tool」→「Option」→「Environment」→「International Setting」でEnglshに変更

    (現在、英語設定にしてしまましたので、英語のまま記載します。。。)

    した後に、DataGridViewを開くと、追加時のフォーム崩れは発生しませんでした。

    ※ご推測のとおり、日本語パックが壊れているっぽいです。特に手を加えたことは無いハズですが、、、

    ひとまず、英語環境でもさほど困らないので、英語環境のままにしておこうと思います。


    どうもありがとうございました。ひとまず解決とさせて頂きます。

    2017年8月7日 5:08