Ну, это технически возможно, вам просто нужно отрегулировать положение управления при прокрутке панели. Например:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
mPicturePos = pictureBox1.Location;
}
Point mPicturePos;
private void panel1_Scroll(object sender, ScrollEventArgs e) {
pictureBox1.Location = mPicturePos;
}
}
Однако вы увидите, что элемент управления начнет выполнять pogo при прокрутке панели. Проблема в том, что Windows слишком полезна. Он быстро прокручивает содержимое самого окна, а затем отправляет запрос рисования только для тех частей окна, которые необходимо перекрасить.
Это выполняется с помощью системной опции «Показать содержимое окна при перетаскивании», доступной в диалоговом окне «Внешний вид + эффекты» апплета «Дисплей» на панели управления. Вы не можете разумно отключить эту опцию, она имеет общесистемные эффекты. На Win7 он даже больше не выставляется.
Для этого нет хорошего обходного пути, кроме простого: не помещайте элемент управления в панель. Просто убедитесь, что он расположен в верхней части панели. Это может быть немного сложнее в конструкторе, поместите его рядом с панелью (при необходимости переместите на передний план) и отредактируйте свойство Location вручную.