Diskuze: Pohyb obrázku

C# .NET .NET (C# a Visual Basic) Pohyb obrázku American English version English version

Avatar
hradil11
Člen
Avatar
hradil11:

Ahoj. Ve škole jsme dostali tohle zadání:
stažení obrázku z internetu
zpracování v obrázku grafickém editoru
-ořez
-změna velikosti
-uložení ve formátu PNG s určením průhledné barvy
vytvoření projektu: formulář, 4 tlačítka
vložení obrázku do složky projektu Properties.Re­sources
zavedení souřadného systému

kreslení na formulář
událost Paint
vytvoření kreslící plochy
vykreslení obrázku

tlačítka „Nahoru“, „Vpravo“, „Dolů“, „Vlevo“

různé verze
ovládání pohybu panáčka klikáním na tlačítka
ovládání pohybu panáčka pomocí kláves A, S, D, W
ovládání pohybu panáčka pomocí šipek (kurzorových kláves)

Vytvořil sem formulář s tlačítk; nahrál obrázek do Properties.Re­sources; zprovoznil sem vykreslování obrázku, ale obrázek se nepohybuje podle klikání na tlačítka

Tady je kód který sem zatím udělal. Byl bych rád za každou radu nebo pomoc. Díky

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication18
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        int x = 200;
        int y = 150;
        Bitmap obrazek;



        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(obrazek, x , y, 36, 50);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            x--;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            x++;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            y--;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            y++;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            obrazek = Properties.Resources.ob01;
        }
    }
}
 
Odpovědět 3.2.2013 19:06
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Místo 60ti metod ButtonClick udělej jednu a podle mapy přičti podle senderu.

private Dictionary<string, int[]> map = new Dictionary<string, int[]>()
{
    {"name1", new int[] { 0, 1 }},
    {"name2", new int[] { 0, -1 }},
    {"name3", new int[] { 1, 0 }},
    {"name4", new int[] { -1, 0 }}
}

private void button1_Click(object sender, EventArgs e)
{
    string name = ((Control)sender).Name;

    x += map[name][0];
    y += map[name][1];

    tady musíš mít vykreslení, jinak se ti nic neposune...
}

Nebo použij slovník akcí - což asi nemá smysl - když nevíš o co go.

V using ti stačí asi 3 řádky.

Editováno 3.2.2013 19:27
 
Nahoru Odpovědět 3.2.2013 19:23
Avatar
hradil11
Člen
Avatar
hradil11:

promin, ale to jsem nějak nepochopil jak to myslíš..já musím mít 4 tlačítka a přes ně ovládat pohyb obrázku

 
Nahoru Odpovědět 3.2.2013 19:29
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:
private Dictionary<string, int[]> map = new Dictionary<string, int[]>()
{
    { "name1", new int[] { 0, 1 }},
    { "name2", new int[] { 0, -1 }},
    { "name3", new int[] { 1, 0 }},
    { "name4", new int[] { -1, 0 }}
}

private int x = 200, y = 150;

Bitmap obrazek;

private void MoveClick(object sender, EventArgs e)
{
    string name = ((Control)sender).Name;

    x += map[name][0];
    y += map[name][1];

    e.Graphics.DrawImage(obrazek, x , y, 36, 50);
}

Proč nepoužiješ PictureBox?

EDIT:

4 tlačítka ano - ale ať volají metodu MoveClick v eventu Click... Jednotlivé hodnoty přičtení se dozvíš dosazením jména Controlu do slovníku. V slovníku tedy přepiš nameX za skutečné názvy tlačítek... (Místo konverze do Control můžeš dát rovnou Name...)

Editováno 3.2.2013 19:33
 
Nahoru Odpovědět 3.2.2013 19:30
Avatar
Dominik Hošic
Redaktor
Avatar
Odpovídá na hradil11
Dominik Hošic:

nejjednodussi reseni je udelat si panel a v nem se bude ten panacek pohybovat a panel budes po kazdem stisknuti tlacitka obnovovat. :)

ukazka:

private void tlacitko_Click(object sender, EventArgs e)
{
y--;
panel.Refresh();
}
Nahoru Odpovědět 3.2.2013 19:36
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
matesax
Redaktor
Avatar
matesax:

Hovadina - místo

e.Graphics.DrawImage(obrazek, x , y, 36, 50);

Musíš dát nějaké funkční vykreslení - proto navrhuji PictureBox... (Tam pak nebudeš vykreslovat, ale měnit padding...)

 
Nahoru Odpovědět 3.2.2013 19:36
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominik Hošic
matesax:

Ale on nechce měnit jen y... Ať vše směřuje do jedné metody - v ní bude znovu vykreslení - před tím se v mapě najdou příslušné hodnoty operandů...

Editováno 3.2.2013 19:39
 
Nahoru Odpovědět 3.2.2013 19:38
Avatar
Dominik Hošic
Redaktor
Avatar
Odpovídá na matesax
Dominik Hošic:

udelal jsem ukazku pro jedno tlacitko. Pokud jsem spravne cetl tak chce proste udelat nejaky obrazek pohybujici se pomoci 4 sipek(4 ruznych tlacitek).

Nahoru Odpovědět 3.2.2013 19:40
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
hradil11
Člen
Avatar
hradil11:

aha, takže jestli to chápu dobře, udělám jen jednu metodu MoveClick a k tomu tu metodu private Dictionary<string, int[]> map = new Dictionary<string, int[]>(). Místo name1 až name4 nahradím názvy tlačítek..a vykreslovat mám do toho pictureboxu nebo přímo na formulář? S pictureboxem jsem ještě nedělal a ani v tomhle případě nemůžu, v zadání mám kreslení na formulář

 
Nahoru Odpovědět 3.2.2013 19:41
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominik Hošic
matesax:

Ano - ale ty jsi dal y do solo metody... Jak jsem psal - ať volá jednu celistvou - a ať se dělí podle odesílatele. Také bych udělal pohyb v KeyDown eventu - pomocí kurzorových kláves...

 
Nahoru Odpovědět 3.2.2013 19:42
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Ne tak úplně. map není metoda, ale proměnná. A musíš jít do návrhové části, tam dej všem tlačítkům do Click eventu metodu MoveClick.

A pak jak už jsem poslal:

private Dictionary<string, int[]> map = new Dictionary<string, int[]>()
{
    { "name1", new int[] { 0, 1 }},
    { "name2", new int[] { 0, -1 }},
    { "name3", new int[] { 1, 0 }},
    { "name4", new int[] { -1, 0 }}
}

private int x = 200, y = 150;

Bitmap obrazek;

private void MoveClick(object sender, EventArgs e)
{
    string name = ((Control)sender).Name;

    x += map[name][0];
    y += map[name][1];

    //zde vykresli
}
 
Nahoru Odpovědět 3.2.2013 19:44
Avatar
Dominik Hošic
Redaktor
Avatar
Odpovídá na matesax
Dominik Hošic:

Nedavno jsem takto delal jeden uplne stejny program a behal skvele ;)
No co, ale stejne ta tvoje metoda je lepsi. Ta moje je o chlup jednodussi na pochopeni. Ale s tou tvou zase dostane treba lepsi znamku :)

Nahoru Odpovědět 3.2.2013 19:46
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
matesax
Redaktor
Avatar
Odpovídá na Dominik Hošic
matesax:

Tak z logiky je lepší volat jednu metodu, když se to týká jedné věci. (A o přehlednosti nemluvě.) Jak jsem psal ať použije PictureBox a mění padding - pak smaže x a y proměnné - a bude to pěkně objektové... :)

(Mapu bych také strčil pryč do objektu, kterého se to týká.)

PictureBox.Padding = new Padding(10, 10, 10, 10);
Editováno 3.2.2013 19:52
 
Nahoru Odpovědět 3.2.2013 19:49
Avatar
hradil11
Člen
Avatar
hradil11:

tady mi nejde o lepší známku, tady je podstatný aby to fungovalo :)
jinak jsem teda tlačítkům přiřadil Moveclick..a ted to vykreslování mám zprovoznit jak?

 
Nahoru Odpovědět 3.2.2013 19:51
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

PictureBox. Zbav se tedy Bitmapy - vem nový PictureBox a zavolej Load - či tak nějak. Smaž X a Y. Pak jen nastavuj Padding - jak jsem ti poslal:

pb.Padding = new Padding(dd, dd, 0, 0);

Ke starým hodnotám přičítej hodnoty získané z mapy...

Časem PictureBox zděď a dej mu tam tu mapu - tím to bude dokonale objektové... :)

Editováno 3.2.2013 19:56
 
Nahoru Odpovědět 3.2.2013 19:55
Avatar
matesax
Redaktor
Avatar
matesax:
private Dictionary<string, int[]> map = new Dictionary<string, int[]>()
{
    { "name1", new int[] { 0, 1 }},
    { "name2", new int[] { 0, -1 }},
    { "name3", new int[] { 1, 0 }},
    { "name4", new int[] { -1, 0 }}
}

private void MoveClick(object sender, EventArgs e)
{
    string name = ((Control)sender).Name;

    imageContent.Padding = new Padding(imageContent.Padding.Left + map[name][0], imageContent.Padding.Top + map[name][1], 0, 0);
}
Editováno 3.2.2013 20:02
 
Nahoru Odpovědět 3.2.2013 20:01
Avatar
hradil11
Člen
Avatar
hradil11:

a ten imageContent je co?

 
Nahoru Odpovědět 3.2.2013 20:04
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

PictureBox, který si přidáš v návrhové části - jméno je na tobě - já jen tak... :)

Být tebou, dal bych to spíše do KeyDown - jak jsem psal - podle šipek - než podle tlačítek - tlačítka jedině jako sekundární ovládání...

Jak vidíš, nepotřebuji x, y ani Bitmapu. Obrázek nastav rovnou v návrhové části...

A promaž ty usingy.

Editováno 3.2.2013 20:09
 
Nahoru Odpovědět 3.2.2013 20:06
Avatar
hradil11
Člen
Avatar
hradil11:

Dobře..Předělal sem to tak jak sem to pochopil :D ale nějak to pořád nefunguje.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication18
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Dictionary<string, int[]> map = new Dictionary<string, int[]>()
        {
            { "button1", new int[] { 0, 1 }},
            { "button2", new int[] { 0, -1 }},
            { "button3", new int[] { 1, 0 }},
            { "button4", new int[] { -1, 0 }}
        };

        private void MoveClick(object sender, EventArgs e)
        {
            string name = ((Control)sender).Name;

            imageContent.Padding = new Padding(imageContent.Padding.Left + map[name][0], imageContent.Padding.Top + map[name][1], 0, 0);
        }
    }
}
 
Nahoru Odpovědět 3.2.2013 20:14
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:
using System;
using System.Windows.Forms;
using System.Collections.Generic;

namespace WorkWithImage //smysluplný název namespace - nastav jako primární pro tvou aplikaci
{
    public partial class Form1 : Form
    {
        private Dictionary<string, int[]> map = new Dictionary<string, int[]>()
        {
            { "button1", new int[] { 0, 1 }},
            { "button2", new int[] { 0, -1 }},
            { "button3", new int[] { 1, 0 }},
            { "button4", new int[] { -1, 0 }}
        }; //fuj - zvol lepší názvy - jako třeba "buttonUp"

        public Form1()
        {
            InitializeComponent();
        }

        private void MoveClick(object sender, EventArgs e)
        {
            string name = ((Control)sender).Name;

            imageContent.Padding = new Padding(imageContent.Padding.Left + map[name][0], imageContent.Padding.Top + map[name][1], 0, 0);
        }
    }
}

Popiš problém - nejsem pes... :)

Editováno 3.2.2013 20:20
 
Nahoru Odpovědět 3.2.2013 20:19
Avatar
hradil11
Člen
Avatar
hradil11:

no nedělá to nic :D obrázek se mi vykreslí, ten jsem nastavil už ve vlastnostech, ale když kliknu na tlačítko tak se nic neděje

 
Nahoru Odpovědět 3.2.2013 20:21
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

V eventu nastav tu metodu... (V návrhové části v sekci Properties klikni na blesk a do pole vedle Click zadej: MoveClick)

Všem tlačítkům...

Editováno 3.2.2013 20:24
 
Nahoru Odpovědět 3.2.2013 20:23
Avatar
hradil11
Člen
Avatar
hradil11:

To mám a stále nefunguje

 
Nahoru Odpovědět 3.2.2013 20:24
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Jak máš velikosti, dockování a tak? Dej do té metody MessageBox a tak otestuj, zda je volána...

 
Nahoru Odpovědět 3.2.2013 20:28
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:
private void MoveClick(object sender, EventArgs e)
{
    string name = ((Control)sender).Name;

    imageContent.Padding = new Padding(imageContent.Padding.Left + map[name][0], imageContent.Padding.Top + map[name][1], 0, 0);

    imageContent.Refresh();
}
 
Nahoru Odpovědět 3.2.2013 20:31
Avatar
hradil11
Člen
Avatar
hradil11:

přidal sem to do té metody a při kliknutí na tlačítko se mi messagebox ukázal..ale pohyb obrázku nebyl žádný

 
Nahoru Odpovědět 3.2.2013 20:31
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Přidal jsem nad tebou Refresh - 100% půjde... :)

 
Nahoru Odpovědět 3.2.2013 20:33
Avatar
hradil11
Člen
Avatar
hradil11:

Ano, už funguje! :) Díky moc :) Ted musím ještě zprovoznit šipky a bude to super :)

 
Nahoru Odpovědět 3.2.2013 20:35
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Předělání MoveClick:

private void MoveClick(object sender, EventArgs e)
{
    MoveWithImage(((Control)sender).Name);
}

private void MoveWithImage(string name)
{
    imageContent.Padding = new Padding(imageContent.Padding.Left + map[name][0], imageContent.Padding.Top + map[name][1], 0, 0);

    imageContent.Refresh();
}

A mapu rozšiř o Key.Up/Left/Dow­n/Right...

 
Nahoru Odpovědět 3.2.2013 20:41
Avatar
hradil11
Člen
Avatar
hradil11:

Funguje, díky moc ;-)

 
Nahoru Odpovědět 3.2.2013 20:50
Avatar
Odpovídá na matesax
Michael Olšavský:

Proc to dělat jednoduše, dyž to jde složitě... Zase ho tu učíš něco čemu pořádně ani nerozumí... On to měl vlastně zezačátku dobře. Stačilo přidat refresh a bylo by to. Je pravda, že s jednou akcí je to jednodušší, ale stejně . Když tomu nerozumí, tak proč mu jen nepředělat tu jeho verzi.

Myslím, že jemu může být úplně jedno jestli je to objektové nebo ne. Promiň jestli se pletu, ale myslím, že ani neví co to znamená.

Editováno 3.2.2013 20:56
 
Nahoru Odpovědět  +4 3.2.2013 20:54
Avatar
matesax
Redaktor
Avatar
Odpovídá na Michael Olšavský
matesax:

On tam měl OnPaint - žádný PictureBox - takže opravdu jsem to udělal strašně složitě - a on to vůbec nechápe...

 
Nahoru Odpovědět 3.2.2013 20:55
Avatar
Odpovídá na matesax
Michael Olšavský:

To je v pohodě, ale zacházet tady až ke slovníkům, vlastním metodám a senderům ... to myslím, že už tam být nemuselo. Ale je to na něm.

 
Nahoru Odpovědět  +1 3.2.2013 20:58
Avatar
hradil11
Člen
Avatar
hradil11:

Je možné mít na formuláři např 2 události?..jako třeba paint a keydown??

 
Nahoru Odpovědět 3.2.2013 21:47
Avatar
hradil11
Člen
Avatar
hradil11:

stím sem počítal, ale mám problém, že mi událost formuláře KeyDown při stisku klávesy vůbec nic nedělá
zdroják stisku klávesy mám takový

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.A) || (e.KeyCode == Keys.Left))
            {
                x = x - 4;
                Refresh();
            }
            if ((e.KeyCode == Keys.D) || (e.KeyCode == Keys.Right))
            {
                x = x + 4;
                Refresh();
            }
            if ((e.KeyCode == Keys.W) || (e.KeyCode == Keys.Up))
            {
                y = y - 4;
                Refresh();
            }
            if ((e.KeyCode == Keys.S) || (e.KeyCode == Keys.Down))
            {
                y = y + 4;
                Refresh();
            }
        }
 
Nahoru Odpovědět 3.2.2013 21:52
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na hradil11
Petr Nymsa:

A máš tu událost zaregistrovanou k formuláři ?

Nahoru Odpovědět 3.2.2013 22:06
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
hradil11
Člen
Avatar
hradil11:

mám

 
Nahoru Odpovědět 3.2.2013 22:07
Avatar
Odpovídá na hradil11
Luboš Běhounek (Satik):

co je to x a y?
Neměl bys na ten pohyb používat tu funkci, co tam máš?

Editováno 3.2.2013 22:18
Nahoru Odpovědět 3.2.2013 22:17
:)
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Jen přidej další mapu - rozhodně nevětvi.

 
Nahoru Odpovědět 3.2.2013 22:21
Avatar
hradil11
Člen
Avatar
hradil11:

tohle je jiný způsob který sem chtěl zkusit..to co sem dělal s tou pomocí mi funguje ;-)..zkoušel sem to dělat přes ten keydown ale nejde tam ani messagebox..tak nevím v čem je problém

 
Nahoru Odpovědět 3.2.2013 22:21
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Problém je, že KeyEvent sežere Form - nastav mu vlastnost KeyPreview:

KeyPreview = true;

Takže použij PictureBox.Ke­yDown...

Jo a jak jsem psal - používej mapu...

Editováno 3.2.2013 22:40
 
Nahoru Odpovědět 3.2.2013 22:40
Avatar
vodacek
Redaktor
Avatar
Odpovídá na Michael Olšavský
vodacek:

až se ho někdo ve škole zeptá co je tady to dictionary a tady ty špičaté závorky že to se ani o hodinách nedělalo tak kolegovi mechovákovi dotyčný znovu ještě poděkuje

 
Nahoru Odpovědět 3.2.2013 22:45
Avatar
hradil11
Člen
Avatar
hradil11:

Já sem to právě dělal uplně jinak než přes ten picturebox. Zkoušel sem to jak nám to ukazoval v hodině přes vykreslování přímo na formulář a ted mi nereagují ty tlačítka na klávesnici. Vím že to není žádný extra kód a že to není uplně všechno správně.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication18
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        int x = 200;
        int y = 150;
        Image obrazek = Properties.Resources.ob01;



        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (x > 440)
                x = -30;
            if (x < -30)
                x = 440;
            if (y > 300)
                y = -50;
            if (y < -50)
                y = 300;
            e.Graphics.DrawImage(obrazek, x, y, 36, 50);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            x = x - 4;
            Refresh();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            x = x + 4;
            Refresh();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            y = y - 4;
            Refresh();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            y = y + 4;
            Refresh();
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.A) || (e.KeyCode == Keys.Left))
            {
                x = x - 4;
                Refresh();
            }
            if ((e.KeyCode == Keys.D) || (e.KeyCode == Keys.Right))
            {
                x = x + 4;
                Refresh();
            }
            if ((e.KeyCode == Keys.W) || (e.KeyCode == Keys.Up))
            {
                y = y - 4;
                Refresh();
            }
            if ((e.KeyCode == Keys.S) || (e.KeyCode == Keys.Down))
            {
                y = y + 4;
                Refresh();
            }
        }
 
Nahoru Odpovědět 3.2.2013 22:51
Avatar
Odpovídá na hradil11
Michael Olšavský:

Kód máš dobře. Nenašel jsem žádné chyby. Musí být chyba v oknu. Možná kdyby si sem nahodil i ten kód designera(for­m1.Designer.cs)

 
Nahoru Odpovědět 4.2.2013 16:37
Avatar
matesax
Redaktor
Avatar
Odpovídá na hradil11
matesax:

Tvl. - psal jsem KeyPreview. Koukám, že jsi i můj kód zahodil - fajn - končím... Nezapomeň - já ničemu nerozumím!

Pro ty co to nechápou - nejsem vůbec uražený, ale k čemu ztrácet čas, když mě pak akorát ponížíte? :)

 
Nahoru Odpovědět  +1 4.2.2013 17:08
Avatar
Don
Člen
Avatar
Odpovídá na matesax
Don:

Konečně jsme se dočkali. Znamená to, že tu nebudeš psát? :D

 
Nahoru Odpovědět  +2 4.2.2013 17:11
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Budeš mi tu chybět.

Nahoru Odpovědět  +3 4.2.2013 17:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Don
Člen
Avatar
Odpovídá na Don
Don:

Mlčení znamená ano :D

 
Nahoru Odpovědět 4.2.2013 17:45
Avatar
Kit
Redaktor
Avatar
Odpovídá na Don
Kit:

Nebuď na něj tak zlej. Dnes hájil čisté objektové programování a používání výjimek. Bohužel narazil na céčkaře, kteří tohle asi nikdy nepochopí.

Nahoru Odpovědět 4.2.2013 17:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na hradil11
David Čápka:

Já bych řekl, že to na formu nepůjde, klávesy přijímají prvky co mají focus a ten form mít nebude. Nechce se mi to teď zkoušet, můžeš zkusit něco jako form1.SetFocus nebo jak to tam je nebo dát tu událost s klávesami do jiné kontrolky, třeba na picturebox.

Nahoru Odpovědět 4.2.2013 18:18
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
hradil11
Člen
Avatar
hradil11:

Už sem to zprovoznil, bylo to tím KeyPreview jak už bylo psáno. Přidal sem ho a vše začalo fungovat ;) Ten program který to dělal přes mapy jak mi bylo porazeno, sem odevzdal. Ten druhý program byl čistě jen na vyzkoušení jestli mi to pujde i takto ;). Díky moc všem :)

 
Nahoru Odpovědět 4.2.2013 19:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 52 zpráv z 52.