2015-10-28 3 views
0

Я использую WinForms. В моей форме у меня есть кнопка и панель. Когда я нажимаю на эту кнопку, я хочу сдвинуть панель вправо. У меня проблемы с кодом. В настоящее время я получаю красные линии ошибки при = panel2.Location.X + 1;Сдвиньте панель

Error Message: Cannot implicitly convert type int to System.Drawing.Point

Я пытался переместить панель с подобным подходом я сделал выращивая панель. Я предусмотрел это в своем коде. Как я могу переместить панель?

private void btn_Right_Click(object sender, EventArgs e) 
{ 
    // Make Panel Grow 
    //while (panel1.Width < 690) 
    //{ 
    // panel1.Width = panel1.Width + 1; 
    //} 

    while (panel2.Location.X < 690) 
    { 
     panel2.Location = panel2.Location.X + 1; 
    } 
} 
+0

хорошо, что делают ошибки в красном говорят ..? мы не читаем здесь читателей. – MethodMan

+0

вы пытаетесь присвоить int точке – enkryptor

+0

извините, ошибка: не удается неявно преобразовать тип int в System.Drawing.Point @MethodMan –

ответ

4

У вас возникла ошибка, потому что вы пытаетесь установить местоположение с целым числом. Вам потребуется новый экземпляр точки:

panel2.Location = new Point(panel2.Location.X, panel2.Location.Y + 1); 
+0

Спасибо, что сделал трюк. Я собираюсь искать новые точечные экземпляры. Все еще изучая эти термины :) @ c.wider –

+0

есть способ написать код, подобный этому panel2.Location = new Point (panel2.Location.X +0.5, panel2.Location.Y); ..... (0.5), поэтому слайд будет медленнее. Вместо + 1 –

+1

нет, местоположение элемента управления может быть представлено только целым числом, но я думаю, что ваша проблема не слишком быстро скользящая, чем проблема с освещением. Попробуйте обновить элемент управления после каждого набора местоположений следующим образом: panel2.Refresh() –

0

Попробуйте использовать .left вместо .Location.X

Это работает в VB ...

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click 
    If sender.text = ">" Then 
     Do Until Panel1.Left > Me.Width - 50 
      Panel1.Left += 1 
     Loop 
     sender.text = "<" 
    Else 
     Panel1.Left = 511 
     sender.text = ">" 
    End If 
End Sub 

Я удивлен, что это гладкий, как есть - панель пуста, однако.

Смежные вопросы