2017-06-16 86 views
1

有一個Button,它根據標記安裝在RichTextBox中的哪條線來垂直更改其位置。當我點擊ButtonPanel(或UserControl,也許它更好)時,出現在Button對面的RichTextBox的整個寬度上。如何在RichTextBox上顯示面板?

Panel應該位於RichTextBox。也就是說,如果從RichTextBox的邊緣到邊緣顯示錶格(500, 500)和此Panel的初始大小,則當用戶將框架大小更改爲(500; 1000)並再次按下Panel顯示器時,此Panel應拉伸並且所有內容也都是顯示在RichTextBox上。以下是垂直顯示Button的代碼以及我需要的動畫GIF示例。

private void richTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    var pos = richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart); 

    Point locationOnForm = panel1.FindForm() 
      .PointToClient(panel1.Parent.PointToScreen(panel1.Location)); 

    Point newLocation = new Point(locationOnForm.X - 10, pos.Y + locationOnForm.Y - 13); 

    button1.Location = newLocation; 
} 

Example GIF

+0

也許你可以嘗試用[控制分層]東西(https://msdn.microsoft.com/en-us/library /aa984382(v=vs.71).aspx)? –

+0

你可以覆蓋UC,像放置按鈕一樣定位它。問題究竟在哪裏? (請注意,它將覆蓋RTB,即它將覆蓋部分文本.. – TaW

回答

0

在onclick方法,你可以放置旁邊的面板呢?

private void MyButton_Click(object sender, EventArgs e) 
    { 
     MyPanel.Location = new Point(MyButton.Location.X + MyButton.Width, MyButton.Location.Y); 
     MyPanel.Visible = true; 
    } 

如果你想要它與按鈕的高度相同,那麼在方法內部添加這一行。

MyPanel.Size = new System.Drawing.Size(MyPanel.Width, MyButton.Height); 

而且拉伸它,你可以用你的形式SizeChnged事件

private void MyForm_SizeChanged(object sender, EventArgs e) 
     { 
      MyPanel.Width - MyButton.width + 5; 
     }