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 似乎最常由视频驱动程序引起。我会尝试两件事:

  1. 更新您的驱动程序
  2. 在具有不同制造商视频卡的机器上尝试此操作(即,如果您有 Nvidia,请尝试 ATI,反之亦然)。
于 2012-06-15T22:19:51.043 回答