Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передвижение объектов на форме 
:(
    Опции темы
NightRider
  Дата 5.11.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 21.5.2005

Репутация: нет
Всего: нет



Помогите, плиз!!!
У меня есть форма, на ней картинка, таймер и кнопка.
Моя задача сделать так, чтобы при нажатии на эту кнопку картинка начинала двигаться направо или налево.
С кнопкой я уже разобрался:

Private Sub but1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but1.Click
Timer1.Enabled = True
End Sub

А вот чтобы картинка начинала двигаться..

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Pic1.Left = True
Pic1.Left(+3) As integer \\чтобы начала движение влево, но у меня оно подчеркивается и пишет Property access must assign to the property or use its value
End Sub

В чем моя ошибка???
PM MAIL   Вверх
stab
Дата 6.11.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



Код

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  pic1.Left = pic1.Left + 3
End Sub



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
NightRider
Дата 6.11.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 21.5.2005

Репутация: нет
Всего: нет



Большое спасибо!
PM MAIL   Вверх
VisualProgrammerNET
Дата 17.11.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 1
Всего: 6



У меня похожая проблемка... помогите новичку, если сможете...

Короче... есть код создания круга на форме:
Код

//в компоненте
public partial class Component1 : Component
    {
        public void CreateBlue()
        {
            SolidBrush aBrush = new SolidBrush(Color.Blue);
            Graphics g = Form1.ActiveForm.CreateGraphics();
            Rectangle Rect = new Rectangle(200, 200, 30, 30);
            g.FillEllipse(aBrush, Rect);
            g.Dispose();
            aBrush.Dispose();
        }
    }

//на форме
public partial class Form1 : Form
    {
        Component1 CreateComp = new Component1();
        
        //а так же много всего
        private void button1_Click(object sender, EventArgs e)
        {
            CreateComp.CreateBlue();            
        }
     }


Надо сделать так, чтобы по нажатию кнопки экземпляр Rect помещался в набор (Collection.ArrayList), и надо создать метод, который перемещал бы необходимый Rect[index] на форме...

smile smile smile

Это сообщение отредактировал(а) VisualProgrammerNET - 17.11.2005, 14:07


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 17.11.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(VisualProgrammerNET @ 17.11.2005, 13:04)
Надо сделать так, чтобы по нажатию кнопки экземпляр Rect помещался в набор (Collection.ArrayList), и надо создать метод, который перемещал бы необходимый Rect[index] на форме...

Может, этот пример поможет ?


--------------------
user posted image
PM MAIL WWW   Вверх
VisualProgrammerNET
Дата 17.11.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 1
Всего: 6



Ммм... я ваще-то полный ламер... можно мне на пальцах? smile


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
arilou
Дата 17.11.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



VisualProgrammerNET

Совсем по-другому надо делать. Например так:

Код

using System.Collections.Generic;

public class MyRect
{
  // этот класс описывает объект, который ты хочешь во множественном числе показывать на форме

  // по-простому
  public int x = 0, y = 0, width = 10, height = 10;

  // рисуем себя там, где надо а не на активной форме
  public void DrawMe(Graphics g)
  {
      SolidBrush aBrush = new SolidBrush(Color.Blue);
      // тогда сможешь переместить rect
      Rectangle Rect = new Rectangle(x, y, width, height);
      g.FillEllipse(aBrush, Rect);
      aBrush.Dispose();
  }
}

public partial class Form1 : Form
{
    // тут храним список объектов, которые надо нарисовать на форме
    List<MyRect> _rects = new List<MyRect>();
        
    private void button1_Click(object sender, EventArgs e)
    {
        MyRect r = new MyRect()
        r.x=5;
        r.y=5;

        _rects.Add(r);

      // вызываем перерисовку формы
        this.Invalidate();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      // подвинем первый rect
      if(_rects.Count > 0)
        _rects[0].x += 5;

      // вызываем перерисовку формы
      this.Invalidate();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        foreach(MyRect r in _rects)
          r.DrawMe(e.Graphics);
    }
}

Добавлено @ 16:36
P.S. Код написан прямо в браузере, поэтому могут быть случайные ошибки-опечатки.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
VisualProgrammerNET
Дата 17.11.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 1
Всего: 6



Спасибо! smile респектище тебе огромный!

да, кстати, а g.Dispose() не надо разве вызывать? Вроде как рисование - ресурсоёмкий процесс...

Это сообщение отредактировал(а) VisualProgrammerNET - 17.11.2005, 20:40


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 18.11.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(VisualProgrammerNET @ 17.11.2005, 19:19)
да, кстати, а g.Dispose() не надо разве вызывать? Вроде как рисование - ресурсоёмкий процесс...

с Graphics, полученного из PaintEventArgs, такого делать нельзя


--------------------
user posted image
PM MAIL WWW   Вверх
arilou
Дата 21.11.2005, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Цитата(VisualProgrammerNET @ 17.11.2005, 20:19)
g.Dispose() не надо разве вызывать

Смотри - тебе неизвестный передает что-то и говорит "попользуйся и отдай, может еще кому пригодится". Ты же не будешь выбрасывать то, что передали? Точно так же и тут - тебе в параметрах что-то отдали, а ты его dispose'ить собрался smile Это должен сделать тот, кто Graphics создал, например, через Graphics.From<что-то>


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NightRider
  Дата 24.11.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 21.5.2005

Репутация: нет
Всего: нет



У меня опять возникла проблема, но уже с решением квадратного уравнения smile smile smile smile smile smile smile smile

Код

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As Double
        Dim B As Double
        Dim C As Double
        Dim x1 As Double
        Dim x2 As Double
        Dim D As Double
        A = TxtA.Text \ !!!!!!!
        B = TxtB.Text
        C = TxtC.Text
        D = (B * B) - (4 * A * C)
        If D >= 0 Then
            x1 = (-B + Math.Sqrt(D)) / (2 * A)
            x2 = (-B + Math.Sqrt(D)) / (2 * A)
            LabelD.Text = D
            Labelx1.Text = x1
            Labelx2.Text = x2
        End If
        If D < 0 Then
            LabelD.Text = D
            Labelx1.Text = " Корней нет! "
            Labelx2.Text = ""
            MsgBox(" Дискриминант меньше нуля. Корней нет! ", MsgBoxStyle.Critical)
        End If
    End Sub

    Private Sub ButtonC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonC.Click
        TxtA.Text = ""
        TxtB.Text = ""
        TxtC.Text = ""
        LabelD.Text = ""
        Labelx1.Text = ""
        Labelx2.Text = ""
    End Sub
End Class


И там, где \ !!!!!!! при запуске сделанной программы выдается ошибка " Conversion from string "" to type 'Double' is not valid. " И это называется "InvalidCastException was unhandled"

Что неверно?
PM MAIL   Вверх
arilou
Дата 24.11.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Цитата(NightRider @ 24.11.2005, 15:16)
Что неверно?

Вот оно - развращающая особенность Бейсика, позволяющая приводить все к всему, даже enum к bool!

Писать надо так:
Код

A = Double.Parse(TxtA.Text)


P.S. А новую тему для нового вопроса слабо было создать? Один топик - один вопрос!


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NightRider
Дата 24.11.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 21.5.2005

Репутация: нет
Всего: нет



Цитата(arilou @ 24.11.2005, 15:27)
Цитата(NightRider @ 24.11.2005, )
Что неверно?

Вот оно - развращающая особенность Бейсика, позволяющая приводить все к всему, даже enum к bool!

Писать надо так:
Код

A = Double.Parse(TxtA.Text)


P.S. А новую тему для нового вопроса слабо было создать? Один топик - один вопрос!

Не слабо, а просто так удобней для тех, кто не знает языка: посмотрел в этот однин раздел, и кое-чуму уже научился, а то бегай по постам, высматривай.... smile
Добавлено @ 15:39
А теперь, когда я изменил на A = Double.Parse(TxtA.Text) , он мне пишет Input string was not in a correct format. smile

Это сообщение отредактировал(а) NightRider - 24.11.2005, 15:36
PM MAIL   Вверх
arilou
Дата 24.11.2005, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: нет
Всего: 61



Цитата(NightRider @ 24.11.2005, 15:35)
Не слабо, а просто так удобней для тех, кто не знает языка: посмотрел в этот однин раздел, и кое-чуму уже научился, а то бегай по постам, высматривай

Если злоупотреблять правилами форума, можно нарваться на злобного модератора.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
nikf
Дата 26.11.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 6.6.2005
Где: город-герой Жирно вск

Репутация: нет
Всего: 1



Цитата(NightRider @ 24.11.2005, 15:35)
Input string was not in a correct format

так дай ему нормальную строку которую можно интерпретировать как число

Это сообщение отредактировал(а) nikf - 26.11.2005, 16:35
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.