WPFでは、TextBoxコントロールの垂直方向の配置を既定でサポートしています。 Windowsフォームでは、TextBoxコントロールの垂直方向の配置を設定する方法はありません。WindowsForms TextBoxの垂直配置を設定するにはどうすればよいですか?
私の場合、私は複数行のテキストボックスを使用しており、テキストはTextBoxの下部に表示する必要があり、それを入力しながら整列を維持する必要があります。
入力したテキストの行数を取得し、テキストの長さに基づいてテキストボックスの境界を計算しようとしました。単語の折り返しでテキストを編集するときに行数が正しく取得されません。
いずれかが編集中にテキストボックスの垂直方向の配置を維持するために、この上で私を助けることができますか?
私は、そのスレッドで与えられた提案を使用してテキストボックスの場所を変更しようとしました。テキストを編集するとき。テキストを編集しようとすると、境界が正しく更新されず、テキストの一部がテキストボックスに隠されます。私はフォントサイズとテキストの幅に基づいて境界を計算しました。
Size textSize = TextRenderer.MeasureText(TextBoxText, this.textBoxControl.Font);
int textBoxTop = this.textBoxControl.Bounds.Top;
int nol = (textSize.Width > this.textBoxControl.Width) ? ((textSize.Width)/this.textBoxControl.Width) + 1 : 1;
{
if (nol > n)
{
n = nol;
rect1 = this.textBoxControl.Bounds;
if (top + (height - nol * textSize.Height) > top)
{
rect1.Y = top + (height - nol * textSize.Height);
rect1.Height = nol * textSize.Height;
this.textBoxControl.Bounds = rect1;
}
else
{
this.textBoxControl.Bounds = rect1;
}
}
else if (nol < n)
{
n = nol;
rect1 = this.textBoxControl.Bounds;
if (rect1.Y + nol * textSize.Height < top + height)
{
rect1.Y += textSize.Height - this.textBoxControl.Margin.Top;
rect1.Height -= textSize.Height;
//this.textBoxControl.Bounds = rect1;
}
if (nol == 1)
{
rect1.Y = top + height - textSize.Height;
rect1.Height = textSize.Height;
//this.textBoxControl.Bounds = rect1;
}
this.textBoxControl.Bounds = rect1;
}
}
そのテキストを編集しながら細かい作業が、いくつかのケースではnol
ライン数が誤って計算されます。折り返し線を含むテキストボックスの実際の行数を取得するにはどうすればよいですか?
関連:http://stackoverflow.com/questions/2653153/c-sharp-winforms-vertical-alignment-for-textbox-etc –
私はそのスレッドで与えられた提案を使ってテキストボックスの位置を変更しようとしました。テキストを編集するとき。 – Adhi
WinFormsのWPFからTextBoxをホストできます。 –