1

このリンクhttp://www.dotnetcurry.com/ShowArticle.aspx?ID=174に従って、 Windows フォームをローカライズし、実行時に言語を変更します。label/button:textbox ではすべて正常に動作しますが、動作しDatagridviewていません。リソース ファイルを確認すると、フランス語版とデフォルト バージョンのテキストが表示されますが、実行すると最後のバージョンが読み込まれました。リスト ボックスから選択すると、デフォルトの英語版が表示されません。

上記のリンクで指定されたメカニズムを使用して、実行時に datagridview ヘッダー テキストを変更するにはどうすればよいですか? ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

1 に答える 1

3

このコードは、フォームの Controls コレクションに追加されたコントロールのみを見つけることができます。ただし、DataGridView 列はそのように追加されず、DataGridView コントロールに追加されます。見つかった DGV の列も反復するように、投稿されたコードを改善する必要があります。このような:

    private void ChangeLanguage(string lang) {
        var ci = new CultureInfo(lang);
        System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
        foreach (Control c in this.Controls) {
            ComponentResourceManager resources = new ComponentResourceManager(this.GetType());
            resources.ApplyResources(c, c.Name, ci);
            if (c.GetType() == typeof(DataGridView)) {
                var dgv = (DataGridView)c;
                foreach (DataGridViewColumn col in dgv.Columns) {
                    resources.ApplyResources(col, col.Name);
                }
            }
        }
    }
于 2012-10-15T16:29:50.907 に答える