Diskuze: Barva okna

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

Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:

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
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

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:

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:

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:

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:

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

 
Nahoru Odpovědět 26.10.2012 14:29
Avatar
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:

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:

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:

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
Avatar
Eldest
Redaktor
Avatar
Odpovídá na Daniel Vítek
Eldest:

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

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

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:

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:

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

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

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:

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:

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:

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
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

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:

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:

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:

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:

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
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:
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:

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:

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:

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:

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:

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:
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
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

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:

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:

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
 
Nahoru Odpovědět 26.10.2012 16:33
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 26.10.2012 16:40
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:

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
 
Nahoru Odpovědět 27.10.2012 10:42
Avatar
matesax
Redaktor
Avatar
Odpovídá na Daniel Vítek
matesax:

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:

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:

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:

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.