2013-06-18 4 views
0

패널이 있는데이 패널의 높이가 500px라고 말하면됩니다. 이 패널 내부에는 패널보다 큰 여러 줄짜리 텍스트 상자가 있습니다. 높이는 1000px라고합시다.텍스트를 선택하는 동안 패널을 스크롤하는 방법은 무엇입니까?

스크롤 막대가 나타나도록 패널이 설정되고 마우스 휠로 스크롤하고 스크롤 막대를 드래그하여 패널을 잘 스크롤합니다. 그러나 텍스트 상자 (강조 표시)에서 텍스트를 선택한 다음 표시된 텍스트 너머로 선택 영역을 드래그하면 스크롤되지 않지만 원하는대로 표시됩니다. 보이는 내용 이상으로 브라우저에서 텍스트를 선택할 때와 매우 비슷합니다.

그것은 내 패널이 사용자 정의됩니다 것을주의 아마 가치가 많이 나는 단순히 아래로 스크롤됩니다 텍스트 상자에 포커스를 설정하여 문제를 방지하기 위해 다음 코드를 추가 한 것은 아니지만 :

class PanelNoScrollOnFocus : Panel 
{ 
    protected override System.Drawing.Point ScrollToControl(Control activeControl) 
    { 
     return DisplayRectangle.Location; 
    } 
} 

이 코드는 from here입니다. 필요한 경우 사용 이유에 대한 자세한 정보를 볼 수 있습니다.

+0

하면 마우스 움직임이'textbox' 아닌'panel'에 때문입니다, 당신은 단지'textbox'의'scrollbar'를 사용할 수 있습니까? – Bolu

+0

@Bolu : 물론 사용할 수는 있지만 실제로 예상되는 동작은 아닙니다. 나는 그것과 함께 지금 살 수있다. 텍스트를 복사 할 때 더 나은 지원을위한 주된 이유입니다. 서두르지 말고, 조금이라도이 조미료를 먹어보고 다시 돌아올 지 알 수 있습니다. – musefan

답변

0

이 작업을 시도 할 수 있습니다 :

public Form1() 
{ 
    InitializeComponent(); 
    textBox1.MouseWheel += textBox1_MouseWheel; 
    panel1.KeyDown += panel1_KeyDown; 
} 

void panel1_KeyDown(object sender, KeyEventArgs e) 
{ 
    textBox1.Focus(); 
} 

void textBox1_MouseWheel(object sender, MouseEventArgs e) 
{ 
    panel1.Focus(); 
} 
+0

이것은 작동하지 않습니다. 텍스트 상자가 선택되었을 때 이미 마우스 스크롤이 작동 했으므로 아마도 내 질문에 대한 오해가있었습니다. – musefan

관련 문제