Permalänk
Medlem

[C#] - Opacity och MDI.

Tjena!

Jag håller på att lära mig C#, och jag håller nu på med att försöka göra ett simpelt program. Under utvecklingen stötte jag däremot på ett problem, angående opacity och MDI.

Min tanke: Jag har min parent, och i den öppnar den upp en annan form, ett child. Det jag hade tänkt är att min parent ska vara helt osynlig, alltså opacity = 0. Den skall fungera som en osynlig behållare för alla forms som jag vill ladda in.

Mitt problem: När jag laddar in ett form i min parent så antar den alltid samma opacity som parenten har. Jag vill ju dock inte att båda ska vara osynliga Jag vill såklart att den jag laddar in ska ha opacity 1. Hur jag än vrider och vänder på det så blir den alltid osynlig, kan man fixa detta?

Om ni har svaret, förklara så simpelt som möjligt Tack!

Permalänk

Re: [C#] - Opacity och MDI.

Citat:

Ursprungligen inskrivet av Zath
Tjena!

Jag håller på att lära mig C#, och jag håller nu på med att försöka göra ett simpelt program. Under utvecklingen stötte jag däremot på ett problem, angående opacity och MDI.

Min tanke: Jag har min parent, och i den öppnar den upp en annan form, ett child. Det jag hade tänkt är att min parent ska vara helt osynlig, alltså opacity = 0. Den skall fungera som en osynlig behållare för alla forms som jag vill ladda in.

Mitt problem: När jag laddar in ett form i min parent så antar den alltid samma opacity som parenten har. Jag vill ju dock inte att båda ska vara osynliga Jag vill såklart att den jag laddar in ska ha opacity 1. Hur jag än vrider och vänder på det så blir den alltid osynlig, kan man fixa detta?

Om ni har svaret, förklara så simpelt som möjligt Tack!

Nu förstår jag inte riktigt vad du vill göra, men varför lägger du inte opacityn till vad du vill ha den i någon lämplg event, typ Load?

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem

Pröva med

form.TransparentColor = // nån färg form.backgroundColor = // samma som transparent

Något liknande fungerar i VB.net iaf, var längesen jag höll på, och har inte Visual Studio installerad så det är otestat.

Permalänk
Medlem

Om jag har förstått dig rätt så vill du alltså gömma "parent" fönstret när "child" fönstret öppnas och sen när du stänger ner child fönstret så skall parent komma fram igen. Nu är jag iofs ingen C# programmerare, men i Java så finns det en funktion, .setVisible(boolean). Det borde finnas något motsvarande. Har använt mig av den i ett projekt jag har arbetat med. Men jag kanske är helt ute och cyklar.

Visa signatur

En fisk...

Permalänk
Medlem

http://msdn2.microsoft.com/en-us/library/7aw8zc76.aspx

"The MDI child form you create in this step is a standard Windows Form. As such, it has an Opacity property, which enables you to control the transparency of the form. However, the Opacity property was designed for top-level windows. Do not use it with MDI child forms, as painting problems can occur."

Det finns nog bättre sätt att åstadkomma det du vill göra med dit program... Beskriv lite mera exakt det du vill göra så kan vi nog hjälpa till.

Permalänk
Medlem

Inte 100 på att detta kommer fungera men jag tror det gör det.

Sätt opacity på parent till 99%
Ställ in transparancykey till nån färg du inte använder någonstans i programmet.
Rita upp hela bilden i parent med den färgen.
Rita upp en svart box bakom varje child i parent som gör att det inte blir genomskinligt just där rutan är.

Vad hade du tänkt använda programmet till? Jag ser ingen användning för en genomskinlig kontainer

Permalänk
Medlem

Hej igen Väldigt mycket svar!

Kan börja med att besvara lite av era frågor innan jag börjar testa era tips.

Citat:

Ursprungligen inskrivet av Turbo_tail
Nu förstår jag inte riktigt vad du vill göra, men varför lägger du inte opacityn till vad du vill ha den i någon lämplg event, typ Load?

Det var bland annat det här jag försökte med, fast även om jag skriver att ett child ska ha 1 i opacity, så tar den alltid, alltid samma opacity som parenten den laddas in i

Citat:

Ursprungligen inskrivet av Kejsarn
Pröva med

form.TransparentColor = // nån färg form.backgroundColor = // samma som transparent

Något liknande fungerar i VB.net iaf, var längesen jag höll på, och har inte Visual Studio installerad så det är otestat.

Tror jag provade det här också. Transparent (som för övrigt är ett full acceptabelt alternativ) ville den inte ha som bakgrundsfärg. Blev något error då

Citat:

Ursprungligen inskrivet av amphiler
Om jag har förstått dig rätt så vill du alltså gömma "parent" fönstret när "child" fönstret öppnas och sen när du stänger ner child fönstret så skall parent komma fram igen. Nu är jag iofs ingen C# programmerare, men i Java så finns det en funktion, .setVisible(boolean). Det borde finnas något motsvarande. Har använt mig av den i ett projekt jag har arbetat med. Men jag kanske är helt ute och cyklar.

setVisible skall provas Däremot vill jag faktiskt att min parent ska vara osynlig hela tiden, men samma tanke

Citat:

Ursprungligen inskrivet av 4r0
http://msdn2.microsoft.com/en-us/library/7aw8zc76.aspx
"The MDI child form you create in this step is a standard Windows Form. As such, it has an Opacity property, which enables you to control the transparency of the form. However, the Opacity property was designed for top-level windows. Do not use it with MDI child forms, as painting problems can occur."

Det finns nog bättre sätt att åstadkomma det du vill göra med dit program... Beskriv lite mera exakt det du vill göra så kan vi nog hjälpa till.

Det där var inte roliga nyheter! Jag håller fortfarande hoppet uppe. Det är ju egentligen bara parenten jag vill ändra opacity på.

Citat:

Ursprungligen inskrivet av Chimaira
Inte 100 på att detta kommer fungera men jag tror det gör det.

Sätt opacity på parent till 99%
Ställ in transparancykey till nån färg du inte använder någonstans i programmet.
Rita upp hela bilden i parent med den färgen.
Rita upp en svart box bakom varje child i parent som gör att det inte blir genomskinligt just där rutan är.

Vad hade du tänkt använda programmet till? Jag ser ingen användning för en genomskinlig kontainer

Det där låter jäkligt fränt faktiskt
Vad hade hade tänkt använda programmet till: Jo, jag hade helt enkelt tänkt göra ett program där man man spara små anteckningar. Snäppet mer avancerat än vanliga anteckningar alltså

Eftersom jag är nybörjare så tittar jag på kanske lite konstiga lösningar till mina problem. Det var såhär:

(före och efter bild på programmet efter man tryckt på knappen).

Jag vill att när man väljer "skriv inlägg" så skall det poppa upp en ruta där man skall skriva en anteckning. Problemet kom när jag ville bestämma VART denna ruta skulle poppa upp. Jag vill nämligen att den ska komma precis UNDER knappen "Nytt inlägg". Då upptäckte jag kodsnutten "location", som avger vart någonting skall öppnas upp på skärmen ----- "With respect to it's container". Därför behöver jag allt i samma container så att jag kan lägga upp saker där jag vill ha dom
Alla forms laddas in i main, som är en den gråa rutan. Jag vill dock inte att man ska se det där gråa, tråkiga området. Om det var osynligt, så skulle det se ut som att "txtWriteMsg" laddades in från ingenstans, istället för att ha en tjock grå ruta där den ska vara.

Jäklar, nog mitt längsta inläg på SweC

Permalänk
Citat:

Ursprungligen inskrivet av Zath
klipp

Lägg "nytt inlägg" stuffet (textbox + ok + avbryt) i en skild panel som du kör hide show på då du vill visa och gömma skiten..

Den panel borde kanske ha 'dock' till bottom och så lägger du 'dock' till fill på den övre.

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Turbo_tail
Lägg "nytt inlägg" stuffet (textbox + ok + avbryt) i en skild panel som du kör hide show på då du vill visa och gömma skiten..

Den panel borde kanske ha 'dock' till bottom och så lägger du 'dock' till fill på den övre.

Trevliga förslag man får Ska bli kul sen när jag återvänder till programmet utrustad med lite bättre vapen än förr, då jäklar.

Permalänk
Medlem

Varför ska du ha en MdiParent egentligen? Kör med en vanlig Sdi form och TransparencyKey, så ska det nog gå.

Permalänk
Medlem

Lyckades hitta en lösning med hjälp av http://www.bobpowell.net/mdiback.htm

Lägg in detta precis efter att initializekomponent har anropats i construktorn för fönstret.

this.Opacity = 1; //Måste vara med av någon lustig anledning och får inte ligga i initializecomponent :S foreach (Control c in this.Controls) { if (c is MdiClient) c.BackColor = Color.Red; //Samma färg som transparancykey på fönstret }