Muh*_*wan 2 c# richtextbox winforms
我正在将文本附加到 RichTextBox。当文本超出 RichTextBox 的可见区域时,会自动出现垂直滚动条。
我想检查是否不存在滚动条,而不是将 Padding 设置为 5。如果出现滚动条,则 padding 应为 0
private void frmAno_Load(object sender, EventArgs e)
{
DisplayingAnomalies();
ChangeFormSize();
}
private void DisplayingAnomalies()
{
int length;
string heading;
switch (_lstNullSheet.Count == 0 ? "zero" :
_lstNullSheet.Count == 1 ? "one" :
_lstNullSheet.Count > 1 ? "more" : "floor")
{
case "zero":
break;
case "one":
heading = "Empty Sheet";
rtbDisplay.Text = String.Format("{0}\r\n[", heading);
rtbDisplay.AppendText(_lstNullSheet[0] + "] Sheet in Excel has no data.\r\n\n");
break;
case "more":
heading = "Empty Sheets";
rtbDisplay.Text = String.Format("{0}\r\n",heading);
foreach(var item in _lstNullSheet)
{
rtbDisplay.AppendText("["+item);
length = rtbDisplay.Text.Length;
if(_lstNullSheet.Last().Equals(item))
{
rtbDisplay.AppendText("] Sheets in Excel has no data.afsdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r\n\n");
break;
}
rtbDisplay.AppendText("], ");
}
break;
case "floor":
break;
default:
break;
}
_sizeToChange = true;
}
private void ChangeFormSize()
{
if(_sizeToChange)
{
this.Height = 200;
}
//Here i want to check if scrollbar is present in richtextbox or not
if(rtbDisplay.Width - rtbDisplay.ClientSize.Width >=
SystemInformation.VerticalScrollBarWidth)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我已经添加了将文本附加到 Richtextbox 的代码。然后我将 Richtextbox 宽度与滚动条宽度进行比较。
(从 MSDN 论坛得到的)
其实很简单。您必须检查WS_VSCROLL
控件的窗口样式中的样式位。
[System.Runtime.InteropServices.DllImport("user32.dll")]
private extern static int GetWindowLong(IntPtr hWnd, int index);
public static bool VerticalScrollBarVisible(Control ctl) {
int style = GetWindowLong(ctl.Handle, -16);
return (style & 0x200000) != 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,按如下方式调用该函数:
var IsScrollBarVisible = VerticalScrollBarVisible(myRichTextBox);
/// Put your logic here
Run Code Online (Sandbox Code Playgroud)
编辑1
RichTextBox
另一种方法可能是这样的:获取附加文本之前和附加文本之后的大小,只需比较ClientSize
文本框的值,就可以根据宽度确定滚动条是否可见。
编辑2
(此编辑的灵感来自于您将在下面看到的评论)
将检查放在文本框的事件WS_SCROLL
内,但是将其包装在条件内,如下所示:ClientSizeChanged
if
private void textbox_ClientSizeChanged(...)
{
if (VerticalScrollBarVisible(myRichTextbox)
{
//Put your logic here, what you want to do if scrollbar is visible
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1180 次 |
最近记录: |