1

カスタムラベルクラスの次のプロパティで、フォントが設定されると、表示されるテキストの新しい長さが検出され、それに応じてラベルのサイズが変更されます。

    /// <summary>
    /// Font of Text Displayed
    /// </summary>
    public Font Font
    {
        get
        {
            return _font;
        }
        set
        {
            _font = value;
            using (Graphics g = _parent.CreateGraphics())
            {
                SizeF soize = g.MeasureString(_text, _font);
                _size = new Size((int)soize.Width, (int)soize.Height);
                _width = _size.Width;
                _height = _size.Height;
            }

しかし、ライン上

SizeF soize = g.MeasureString(_text, _font);

次のエラーが発生します:System.AccessViolationException {"保護されたメモリの読み取りまたは書き込みを試みました。これは、他のメモリが破損していることを示していることがよくあります。"}

これは、フォントを埋め込みのカスタムフォントに変更した場合にのみ発生します。通常、私のカスタムラベルのほとんどのインスタンスでは、同じフォントが同じ方法で使用されている場合でも、これはエラーをスローしません。また、エラーをスローせずに動作するように見えることもありますが、なぜ動作することを決定するのか、そうでない場合もあります。

誰かが私に何ができるか知っていますか?

4

1 に答える 1

1

ランダムなGDI+関連のAccessViolationExceptionsは、ほとんどの場合、ビデオドライバーが原因で発生するようです。私は2つのことを試みます:

  1. ドライバーを更新する
  2. 別のメーカーのビデオカードを搭載したマシンでこれを試してください(つまり、Nvidiaを使用している場合はATIを試してください。その逆も同様です)。
于 2012-06-15T22:19:51.043 に答える