Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Barva okna

C# .NET .NET (C# a Visual Basic) Barva okna American English version English version

Aktivity (1)
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:26.10.2012 13:06

Dá se nějak jednoduše změnit barva okna ? Např. jak to máš Skype (modrou)

 
Odpovědět 26.10.2012 13:06
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
Daniel Vítek:26.10.2012 13:14

EDIT Má skype

 
Nahoru Odpovědět 26.10.2012 13:14
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 13:22

BackColor...

Editováno 26.10.2012 13:23
 
Nahoru Odpovědět 26.10.2012 13:22
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 13:25

Myslím tam nahoře jak je název okna

 
Nahoru Odpovědět 26.10.2012 13:25
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 13:27

Máš-li na mysli border - tak si jej nakresli sám...

 
Nahoru Odpovědět 26.10.2012 13:27
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 14:19

Dají se nějak vybrat všechny položky v daném formu ?
Třeba když mám otevřený 2 formy, jednom mám třeba 5 buttonů, 8 inputů, třeba kalendář atd.
a v tom druhým mám jeden button, dá se nějak udělat aby se po zmáčknutí toho buttonu skrylo vše v prvním formu ?

 
Nahoru Odpovědět 26.10.2012 14:19
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
Daniel Vítek:26.10.2012 14:29

tzn. abych nemusel dávat
textbox1.visible = false;
textbox2.visible = false;
button1.visible = false;
.
.
.

 
Nahoru Odpovědět 26.10.2012 14:29
Avatar
David Jančík [sczdavos]
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Jančík [sczdavos]:26.10.2012 14:29

Dej si je do Panelu.

Nahoru Odpovědět 26.10.2012 14:29
Čím více času dostaneš, tím méně ho máš.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Jančík [sczdavos]
Daniel Vítek:26.10.2012 14:35

No, skryly se mi ale nechcou se mi zobrazit :D
Vychozí stav je false, když je chci ukázat tak mi to nejde

Editováno 26.10.2012 14:36
 
Nahoru Odpovědět 26.10.2012 14:35
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 14:43

Button Click:

panelx.Visible = !panelx.Visible;
 
Nahoru Odpovědět 26.10.2012 14:43
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 14:49

Místo Buttonu by se hodil CheckBox...

Checked Changed:

panelx.Visible = checkBox1.Checked;
Editováno 26.10.2012 14:49
 
Nahoru Odpovědět 26.10.2012 14:49
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 14:50

nn button :P

 
Nahoru Odpovědět 26.10.2012 14:50
Avatar
Eldest
Redaktor
Avatar
Odpovídá na Daniel Vítek
Eldest:26.10.2012 14:50

Tak nastavíš jednoduše na true ne?:)

 
Nahoru Odpovědět 26.10.2012 14:50
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 14:50

nn button :P

 
Nahoru Odpovědět 26.10.2012 14:50
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 26.10.2012 14:51
Avatar
Eldest
Redaktor
Avatar
Odpovídá na Daniel Vítek
Eldest:26.10.2012 14:52

Nějak nechápu tvůj problém :D

 
Nahoru Odpovědět 26.10.2012 14:52
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Eldest
Daniel Vítek:26.10.2012 14:53

to true mi právě nejede

 
Nahoru Odpovědět 26.10.2012 14:53
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 14:57

matesax to s tím vykřičníkem nejede

 
Nahoru Odpovědět 26.10.2012 14:57
Avatar
Eldest
Redaktor
Avatar
Eldest:26.10.2012 14:58

Zkus poslat screenshot, ať víme co máš přesně na mysli a snažíš se udělat. Popř. co přesně píšeš.

 
Nahoru Odpovědět 26.10.2012 14:58
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 14:58

Máš ten panel vůbec přidaný v Controls? :)

 
Nahoru Odpovědět 26.10.2012 14:58
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 15:00

Controls ? :D
Mám

private void button1_Click(object sender, EventArgs e)
        {
Form1 form = new Form1();
            if (textBox2.Text == "mujtext" && textBox1.Text == "jinytext")
            {
                form.panel3.Visible = !panel3.Visible;
                this.Close();
            }

        }
 
Nahoru Odpovědět 26.10.2012 15:00
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 15:04

Musíš mít:
několikrát

panel1.Controls.Add

a pak

Controls.Add(panel1);
 
Nahoru Odpovědět 26.10.2012 15:04
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 15:06

Naco to ? :D

 
Nahoru Odpovědět 26.10.2012 15:06
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 15:06

Tvl - aby se ti to vykreslilo ve Formu... :)

Podívej se do designové části - tam to máš mít...

Editováno 26.10.2012 15:07
 
Nahoru Odpovědět 26.10.2012 15:06
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 15:07

a co se mi tam mááá vykreslíííííí­ííííííííííííí­ííííííííííííí­ít ? :D

 
Nahoru Odpovědět 26.10.2012 15:07
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 15:07

Panel s Controly...

Editováno 26.10.2012 15:08
 
Nahoru Odpovědět 26.10.2012 15:07
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:26.10.2012 15:08

Do panelu si může kontroly napřidávat v designeru. Nemusí mít ani panel, stačí proiterovat kolekci Controls na Formu. Ale opět tu řešíme co si Dan myslí, že chce, a ne to, co potřebuje. Bylo by lepší, kdyby nám řekl co chce udělat.

Nahoru Odpovědět 26.10.2012 15:08
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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 15:09

hele teď ti fakt nerozumím :D

DO toho panelu jsem si natáhl pár věciček (buttony,inputy atp.), výchozí stav je Visible = false; a chci že když zmáčknu ve 2. formu tlačítko aby se mi v tom 1. nastavilo na visible = true;...

 
Nahoru Odpovědět 26.10.2012 15:09
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:26.10.2012 15:11

No, máš to tady ;)

 
Nahoru Odpovědět 26.10.2012 15:11
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 15:21
partial class MainForm
{
    private System.ComponentModel.IContainer components = null;

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

private void InitializeComponent()
        {
            this.panel1 = new System.Windows.Forms.Panel();
            this.SuspendLayout();
            //
            // panel1
            //
            this.panel1.Location = new System.Drawing.Point(0, 0);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(200, 100);
            this.panel1.TabIndex = 0;

...

panel1.Controls.Add // několikrát
public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();

        new Daughter(this).Show();
    }
}
public partial class Daughter : Form
{
    private MainForm mum = null;

    public Daughter(MainForm mainForm)
    {
        InitializeComponent();

        mum = mainForm;
    }

    private void Button1_Click(object sender, EventArgs e)
    {
        mum.panel1.Visible = !mum.panel1.Visible;
    }
}
Editováno 26.10.2012 15:23
 
Nahoru Odpovědět 26.10.2012 15:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:26.10.2012 15:28

Hloupost.

Již jsem psal, že panel nemusí přidávat v kódu a když do něj v designeru natahá kontroly myší, tak to Add samozřejmě vygeneruje IDE za něj včetně všeho co jsi napsal.

Koukám, že se v tom docela ztrácí, tak mu nepiš takovéhle věci. Stačí vše jen naklikat myší a udělat na Formu veřejnou metodu TogglePanel(), tu pak zavolá odkudkoli. Metodu do formu si Daniel Vítek snad přidá. Ještě pro jistotu napíšu, že v ní bude něco jako:

panel.Visible = panel.Visible;

Jestli tohle nezafunguje, tak už mu vážně asi nic nepomůže.

Nahoru Odpovědět 26.10.2012 15:28
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
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:26.10.2012 15:30

Nezafunguje - nemáš tam negaci... Proč je to mé hloupost? Já již dávno nepoužívám autogeneraci - ale pochybuji, že Dan také...

Když mu to nefunguje, tak to prostě nemůže mít přidané,...

Editováno 26.10.2012 15:33
 
Nahoru Odpovědět 26.10.2012 15:30
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:26.10.2012 15:35

Jak poznáš v designu, že se ti to přidalo? V kódu na první pohled...

 
Nahoru Odpovědět 26.10.2012 15:35
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:26.10.2012 15:48

v designu když s tím panelem kousíček pohneš tak se ti posune vše co v něm je spolu s ním

 
Nahoru Odpovědět 26.10.2012 15:48
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:26.10.2012 15:52

Dal jsem

public void zobrazVse()
        {
            panel3.Visible = true;
        }

...nejede

 
Nahoru Odpovědět 26.10.2012 15:52
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 15:53
public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent(); // zde musíš mít přidání panelu do controls a v něm jeho kontroly

        new Daughter(this).Show();
    }
}

public partial class Daughter : Form
{
    private MainForm mum = null;

    public Daughter(MainForm mainForm)
    {
        InitializeComponent();

        mum = mainForm;
    }

    private void Button1_Click(object sender, EventArgs e)
    {
        mum.panel1.Visible = !mum.panel1.Visible;
    }
}
Editováno 26.10.2012 15:55
 
Nahoru Odpovědět 26.10.2012 15:53
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 26.10.2012 16:15
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:26.10.2012 16:20

Je to nesmysl - a ještě nastavuješ jen jednu hodnotu...

panel1.Visible = !panel1.Visible;
 
Nahoru Odpovědět 26.10.2012 16:20
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:26.10.2012 16:29

Dej tam:

public void PrepniPanel()
{
   panel3.visible = !panel3.visible;
}

Tuhle metodu si dej do kódu formuláře. Pak na instanci toho formu (jak na ní voláš třeba Show() zavoláš PrepniPanel() a on zmizí nebo se zobrazí. To je celé.

matesax: Vykřičník jsem zapomněl, designer slouží k designu formu (nečekaně), proto pokud přes něj děláš aplikaci, měl bys ho používat. Jsi přeci pro ten jednoduchý kód, tak mu tu nevnucuj 100 řádků když může kliknout myší v nástroji, který je pro to ještě určený. Je vidět, že jsi nedělal složitější formulářovou aplikaci, ono by tě to přešlo.

Nahoru Odpovědět 26.10.2012 16:29
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
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:26.10.2012 16:32

No z designeru vyjede tolik zbytečností... Pokud dělám s designerem, nedělám s kódem - tak jsem to nenapsal...

Proč to dávat do metody?

Je to tu již snad 6X - takže opravdu nevím, kde hledat problém... :)

Dane pošli projekt - třeba přes Uložto...

Editováno 26.10.2012 16:34
 
Nahoru Odpovědět 26.10.2012 16:32
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:26.10.2012 16:33

No,tak to mi taky nejede

 
Nahoru Odpovědět 26.10.2012 16:33
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:26.10.2012 16:40

to je jedno,kašli na to

 
Nahoru Odpovědět 26.10.2012 16:40
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:26.10.2012 17:06

Jestli máš problémy s přidáním metody do třídy, tak od toho tu jsou tutoriály. Jinak už fakt nevím :)

Nahoru Odpovědět 26.10.2012 17:06
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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:27.10.2012 10:42

co tam mám blbě ? :(

 
Nahoru Odpovědět 27.10.2012 10:42
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:27.10.2012 10:48

Pošli kód (nejlépe Solution přes Uložto) - jinak na to nikdo nepřijde...

Editováno 27.10.2012 10:48
 
Nahoru Odpovědět 27.10.2012 10:48
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na matesax
Daniel Vítek:27.10.2012 10:52

btw. Víš jak si mi radil nabarvit si ten border...no udělal jsem si to prřes Picture box a na pozadí jsem dal barvu, jenže s oknem se nedá hejbat (nečekaně :D ) Jak to udělat aby to šlo ?

 
Nahoru Odpovědět 27.10.2012 10:52
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:27.10.2012 11:09

Nedělej to přes PictureBox - nedáváš-li tam obrázek - použij VB graphic -> Toolbox - VisualBasic PowerPacks.

Vyber si prvek, který bude posouvání ovládat a z jeho MouseDown/Click eventu pošli zprávu.

Tedy rozeberu ti to - nejprve si potřebné metody stáhni:

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

Z jejich názvu lze pochopit o co GO - první pošle zprávu - druhá sejme (zachytí) aktuální stav.

Hodnoty "int Msg, int wParam, int lParam" se dozvíš z manuálu. Tedy:

public const int WM_NCLBUTTONDOWN = 0xA1, HT_CAPTION = 0x2;

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

Zbývá již jen zachytit událost a poslat zprávu - tedy vytvoříme si na to metodu se parametrem kdo je spouštěč.

public MoveIsEnabled(IntPtr who)
{
    ReleaseCapture();
    SendMessage(who, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}

Tím pošleme spouštěče události a zprávy o akci, která se má vykonat... Celé se to dá krásně dát do objektu:

using System.Runtime.InteropServices;
using System;

public class MoveIsEnabled
{
    public const int WM_NCLBUTTONDOWN = 0xA1, HT_CAPTION = 0x2;

    [DllImportAttribute("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    [DllImportAttribute("user32.dll")]
    public static extern bool ReleaseCapture();

    public MoveIsEnabled(IntPtr who)
    {
        ReleaseCapture();
        SendMessage(who, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}

V místě, kde zachycuješ MouseDown event jen zavoláš tuto metodu s příslušným parametrem:

new MoveIsEnabled(Handle);

Přičemž Handle je vlastnost třídy Form... Něco nejasné? :)

Editováno 27.10.2012 11:10
 
Nahoru Odpovědět 27.10.2012 11:09
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:27.10.2012 11:26

Nebo hackni paint - to bude vůbec nejjedodušší a nejlehčí... :)

 
Nahoru Odpovědět 27.10.2012 11:26
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 48 zpráv z 48.