私のアプリケーションの1つは、MSWordとドキュメントの作成/編集/フォーマットを扱っています。私はOffice2007w / VS 2008を使用しており、2003または2008のいずれかで動作するように見えるMicrosoft.Office.Interop.Wordライブラリに対してコーディングしています。
Document.Shapes.AddTextboxメソッドを使用してドキュメントにテキストボックスを作成し、テキストを入力します。テキストがテキストボックス内に収まるかどうかをプログラムで判断できるようにしたいのですが、収まらない場合は、収まるまでフォントサイズを小さくします。
私はいくつかの異なる方法を試しました:
1)boolShape.TextFrame.Overflowingプロパティを使用する
while (textbox.TextFrame.Overflowing) // adjust font size
ただし、ドキュメントを開くと、テキストがボックスに収まっていることがわかりますが、これはTRUEを返します。
2)テキストの最後の文字のX / Y位置をチェックし、その座標がテキストボックスの境界内にあるかどうかを確認します
lastCharX = System.Convert.ToSingle (tb.TextFrame.TextRange.Characters.Last.get_Information (WdInformation.wdHorizontalPositionRelativeToPage));
lastCharY = System.Convert.ToSingle (tb.TextFrame.TextRange.Characters.Last.get_Information (WdInformation.wdVerticalPositionRelativeToPage));
bool outsideFrameBoundaries = lastCharX + lastCharWidth > frameBoundaryX || lastCharY + lastCharHeight > frameBoundaryY;
ただし、これはほとんどの場合ボックス内にあるX / Yを返しますが、ドキュメントを開くと、ボックスに収まらないために文字が表示されません。
だから私はここでアイデアが不足しています、そして私は他の誰かがこれを以前に経験したことがあるかどうか、そして彼らが相互運用という言葉である不正確な混乱に対処するための提案を持っているかどうか尋ねていますか?