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

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

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

No.85338 の関連記事表示

<< 0 >>
■85338  TexctBoxRenderer が使えなくなる原因
□投稿者/ Ainax -(2017/10/11(Wed) 15:00:06)

    分類:[.NET 全般] 

    Windows 10 x64 Vs Community 2013 C#

    下記コードで、プリンタダイアログを表示後に TextBoxRenderer の IsSupported を確認すると False が返ってきてしまいます。
    プリンタダイアログ表示前は IsSupported も True が返って来て描画もうまく行っています。
    プリンタダイアログ表示後は、IsSupported を無視して描画に進もうとすると、
    「クライアント領域で Visual スタイルが現在無効に設定されているため、Visual スタイルに関連する操作でエラーが発生しました。」
    とエラーが発生してしまいます。
    試しに、描画処理前に Application.EnableVisualStyles(); を入れてみましたが、同じエラーが発生しました。

    描画処理部のコード:
    private void Render()
    {
    Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    Graphics g = Graphics.FromImage(canvas);

    if (TextBoxRenderer.IsSupported)
    {
    Rectangle textBoxRect = new Rectangle(0, 0, 200, 50);
    TextFormatFlags textBoxFormat = TextFormatFlags.TextBoxControl;
    TextBoxRenderer.DrawTextBox(g, textBoxRect,
    "テキストボックス", new Font("MS UI Gothic", 20), textBoxFormat,
    System.Windows.Forms.VisualStyles.TextBoxState.Normal);
    }else
    {
    MessageBox.Show("no-Suported");
    }

    g.Dispose();

    pictureBox1.Image = canvas;
    }

    プリントダイアログ表示部:
    private void プリントダイアログPToolStripMenuItem_Click(object sender, EventArgs e)
    {
    System.Drawing.Printing.PrintDocument pd =
    new System.Drawing.Printing.PrintDocument();



    pd.PrintPage +=
    new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);

    PrintDialog pdlg = new PrintDialog();
    pdlg.Document = pd;



    if (pdlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
    // pd.Print();
    }
    }

    なお、同様のエラーが発生するパソコンとしないパソコンがあり、発生しないパソコンには Konicaminolta の
    プリンタドライバが入っておりません。
    エラーが発生するパソコンには C224 や C554 のドライバが入っております。

    このドライバが原因でしょうか?
親記事 /過去ログ146より / 関連記事表示
削除チェック/

■85341  Re[1]: TexctBoxRenderer が使えなくなる原因
□投稿者/ Azulean -(2017/10/11(Wed) 21:51:14)
    No85338 (Ainax さん) に返信
    > なお、同様のエラーが発生するパソコンとしないパソコンがあり、発生しないパソコンには Konicaminolta の
    > プリンタドライバが入っておりません。
    > エラーが発生するパソコンには C224 や C554 のドライバが入っております。
    >
    > このドライバが原因でしょうか?

    可能性は高いでしょうね。

    EnableVisualStyles は Windows XP から追加されたテーマを適用するという宣言をするものです。
    しかしながら、Win32API の世界に降りると、このコントロールには適用しないと言った細かな制御やテーマの適用をやめると言った細かな制御ができるようになっています。
    推測となりますが、そのプリンターで印刷する際に呼び出される処理によって、テーマが無効化され、TextBoxRenderer が機能しなくなるのでしょう。

    基本的に、アプリケーションとしてできることはないと考えた方が良いです。
    (無効化されたテーマを復旧させるみたいな奪い合いはいい結果を生みませんし、環境依存のコードとなるのでちゃんと動いていた環境で悪影響が出る可能性も否定できません)
記事No.85338 のレス /過去ログ146より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -