- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Ivqkzy-: 2. gépem
- Magga: PLEX: multimédia az egész lakásban
- Steven: Sokat utazó kávéfüggők ide!
- eBay-es kütyük kis pénzért
- droidic: EA GAMES – élő emberrel a supportban 2025 ben
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
Karma
félisten
Amit most linkeltél, az nem a feladatot oldja meg – túl sok felesleges dolgot rizsáz ki. Ha egy feladat azt mondja, hogy írd ki a neveket, akkor ne írjon ki semmi mást! ("nem férfi", "nem halak", stb. kuka) Egy érettségin, versenyen, való életben ez igen kritikus.
Az is fura, hogy a neveket beégetted, de a személyi számokat gépelgetni kell. Az egészet be lehetne égetni akkor már, és nem is lennél a konkrét 5 darabhoz kötve.
Egyébként kezdő Pascal kísérletnek szódával elmegy. C#-nak sajnos elég távoli.
Ha addig más nem szól bele, majd este kifejtem, hogy miért. -
dipeti
senior tag
válasz
martonx #5094 üzenetére
Nos! Sikerült megoldani. Ma beszéltem egy nálam sokkal okosabb emberrel és elmondta, hogy milyen úton kéne elindulni. Azt mondta, hogy szedjem ki SubStringgel a születési dátumot (0228) és egyszerűen csak nézzem meg relációkkal (<>).
Mivel nem mondja a feladat, hogy el is kell tárolni a változó értéket picit csaltam (mert így nem kellett annyit gondolkoznom) és megalkottam.
Szívesen meghallgatnám, hogy ti hogyan csináltátok volna.
Még egyszer a feladat: "Adott N ember neve, személyi száma. Válogassuk ki a halak csillagképben született
férfiak neveit (február 21 – március 20)." -
trisztan94
őstag
válasz
martonx #5094 üzenetére
Nem tudom ismered e, de nekem a kedvenc online kódmegosztós-futtatós szolgáltatásom a .NET Fiddle.
Több nyelvet is tud, bele lehet rakni NuGet csomagokat, stb.
-
martonx
veterán
Akkor pár gyors kérdés:
Az megvan, hogy ez egy C# topik, és hogy mi az a C#, illetve ugye nem téveszted össze C-vel, C++-al?
Ennek megfelelően gondolom Visual Studio valamelyik új verzióját ugye telepítetted már?
Azért valamilyen könyvet biztos csak olvastál már C# témában, ugye?
Konkrétan addig eljutottál-e már, hogy legalább megpróbáltad megoldani a problémát?Bocsánat, ezek nem hülyének nézős kérdések, csak semmi nem derült ki a hsz-edből, és gondoltam a kötelező köröket tudjuk le gyorsan
Ha bármelyik kérdésre NEM a válaszod, akkor javaslom előbb tájékozódni, és csak utána kérdezni.
Egy példakódot jó lenne látni tőled, hogy mégis meddig jutottál, hol akadtál meg. Mondjuk ide tedd be, amit eddig csináltál: http://csharpfiddle.com/
-
dipeti
senior tag
Sziasztok! Először is: nemrég kezdtem el autodidakta módon tanulni a programozást. Ennek megfelelően nagyon nagyon amatőr vagyok hozzátok képest.
Ez a feladat amit kinéztem magamnak és nem igazán tudom, hogy lenne célszerű belekezdeni. Sajnos ötletem sincs. Megköszönném ha valaki segíteni egy picit.Adott N ember neve, személyi száma. Válogassuk ki a halak csillagképben született
férfiak neveit (február 21 – március 20).Kérlek a legegyszerűbben próbáljátok meg elmagyarázni, mert tényleg nagyon kezdő vagyok.
-
Dj Sügi
őstag
Üdv!
Egy gyors kérdésem lenne: Ha készítek egy listbox-ot, feltöltöm elemekkel, akkor az egyes elemeket hogyan tudom elérni a szerkesztőben és funkciót adni nekik? Mert a listbox-ot csak "egészben" lehet kijelölni, a benne lévő egyes elemeket külön nem.
Kösz!
-
j0k3r!
őstag
válasz
trisztan94 #5071 üzenetére
egy par honapja talaltam: http://sourcemaking.com/design_patterns - erdemes az antipatterns/refactoring reszt is megnezni
-
Alexios
veterán
Lenne egy elég hát lehet hülye kérdésem, de nem igazán csináltam még custom controlt win8 alatt.
[link]
Ez alapján próbálkozom, addig megvan, hogy csináltam egy templated controlt, illetve a xaml résznél kitöltöttem a generált generic.xaml-t. Viszont a code behind elég zavaros, csináltam egy Source dependency propertyt(bitmapimage típusút, bár nem tudom az kell-e). A probléma az eventen belül van, mert a _scrollViewer meg _image objektumokat hol kéne létrehoznom pl? Illetve nem teljesen világos, hogy mi hívja meg ezt az eseményt sem. -
-
K_Gabor
tag
Köszönöm,ez lesz az.Ezzel már hipp-hopp összeraktam a menüt
Lehet,hogy ez is egy nagyon amatőr kérdés,de azt még meg tudná nekem valaki mondani,hogy pl. Excel szűrőjénél a cella jobb alsó sarkában lévő kis szürke egérklikkre érzékeny ikont milyen technikával lehet odavarázsolni?
Előre is köszönöm!
-
Karma
félisten
válasz
trisztan94 #5083 üzenetére
Én mindig az MVVM mentén dolgozok, elég jó eszközök vannak a kényelmes alkalmazásához (mondjuk én csak az MVVMLightot használom, de van sok más is
).
Mondjuk nem biztos, hogy erről kéne olvasgatnod, ha a korábban mutatott fogalomzavarokon még nem tetted túl magad teljesen. Az előző kérdéseidre sajnos nem tudok válaszolni. Én még gimnazistaként sokat forgattam programozási könyveket és feladatokat, az egyetem alattra pedig szépen összeértek és helyükre kerültek dolgok. Nem igazán volt egy meghatározó pont, egy könyv amit ajánlani tudnék.
De ha már az angol wikipédián végignézed a kapcsolódó anyagokat, akkor is előrébb kellene jutnod. Könyvet meg majd ajánl más
-
trisztan94
őstag
válasz
Goose-T #5082 üzenetére
Koszonom!
Elkezdtem most utananezni jobban a dolgoknak, foleg az MVVM patternnek.
Esetleg arra valaki valamit, hogy mikor erdemes WP eseteben MVP es MVVM patternt hasznalni? Milyen tipusu apphoz melyiket kell, stb.
Illetve, ha jatekban gondolkozunk XNA fw-el, ott inkabb az MVC-t erdemes?
-
Goose-T
veterán
válasz
trisztan94 #5061 üzenetére
A XAML az MVVM-mel karöltve a binding használatára van szabva. Használj bindingot, ne akarj fúróval faragni, mert nehezen fog menni.
-
Karma
félisten
válasz
K_Gabor #5079 üzenetére
A Stringben tárolás így is úgy is elég csökött megoldás, mert bitenként 16 bitet foglalsz le. Ha már valami, használj bool tömböket, de még jobb, ha nem is szívatod magad a bites formával.
Írtam egy minimál osztályt, ami biteket fogad, és nyolcanként kiírja egy Streamre. Itt megtalálod.
Ha FileStream helyett MemoryStreamet adsz neki, akkor byte tömböt is gyárthatsz könnyen vele.
-
K_Gabor
tag
-
K_Gabor
tag
Igen,stringbuilderrel lényegesen gyorsabb lett,mint előtte.
Különösebb oka nem volt,leginkább a rutintalanságból jött.Nem találkoztam még ilyen problémával ezért nem is gondoltam ,hogy ebből gondom lesz,de most már ezt is megtanultam.
Még ezzel a fránya fájlba írással kűzdök ,de már nagyon örülnék ha sikerülne. -
vlevi
nagyúr
válasz
K_Gabor #5075 üzenetére
A stringmuveletekkel igy az a baj, hogy mindegyik stringmuvelet eredmenye egy uj string, es a regi feleslegesse valik. Nagyon lassu es memoriazabalo, meg akkor is, elsore ezt nem erzed. Talan a stringbuilder hasznalataval jobb a helyjzet, de akkor sem celszeru stringben, ami raadasul unicode string, tehat 2 byteos is lehet. Mi volt ennek az oka, es miert nem list<byte> -ban taroltad?
-
Karma
félisten
válasz
K_Gabor #5073 üzenetére
Félelmetes, hogy mi köze lehet egy pixelműveletnek a stringekhez...
De egyébként ha gyorsan akarsz bitmappel dolgozni, és nem telefonon/RT-n vagy, az unsafe pointeraritmetikánál nem nagyon lesz gyorsabb. Legalábbis a C# kód.
A biteskedésnél meg kell egy Stream ahova írod az eredményt, meg egy byte amibe shift művelettel tolod az értékeket.
-
K_Gabor
tag
Sziasztok!
Lenne két kérdésem:
1.
Egy olyan problémám van,hogy valamivel kevesebb mint 2.1millió pixel RGB kódjából kell 1-1 bitet kiszedjek.
Ez sikerült is,viszont iszonyat lassú mire végigugrál a ciklus a pixeleken.
A megoldásomat ez alapján csináltam.Van esetleg valami megoldás amivel lényegesen tudok rajta gyorsítani?
2.
Ha van egy olyan (mondjuk) stringem ami csupa 0-t és 1-est tartalmaz akkor azt hogyan tudom kiírni fájlba ,hogy újra használható formában legyen?
Pl: van egy mp3 számom ami jelenleg 0-k és 1-esek sorozata ként van meg,de vissza akarom állítani ,hogy lejátszahtó legyenKöszönöm a segítséget!
-
trisztan94
őstag
Uhh, hát ezek szerint nem nagyon értettem meg az OOP (és a patternek) fogalmát. Nagyon ritkán van olyan, hogy 0-ról kell lekódolnom egy pattern szerint valamit.
Tudsz esetleg ajánlani egy jó könyvet vagy videósorozatot ami ezt taglalja és elmagyarázza?
(#5068) j0k3r!
totalisan keverve van az angol es a magyar (getMagyarSzavak, isInMondat, stb.)
Na igen, valamikor meg tudom hirtelen fogalmazni magyarul a változó nevét, valamikor kicsit gondolkodom rajta és akkor csak leírom angolul, vagy félig magyarul félig angolul. Rossz szokás
Köszönöm, hogy elolvastátok és, hogy tanácsot adtatok, megpróbálom ezen területen komolyan elkezdeni fejleszteni magam, mert ez így nem állapot
-
j0k3r!
őstag
válasz
trisztan94 #5060 üzenetére
hello!
1, egyetertek Karma-val
2, amik egy gyors atfutas utan szurtak a szemem:
- totalisan keverve van az angol es a magyar (getMagyarSzavak, isInMondat, stb.)
- nincs egyseges notation hasznalva. egyik osztalyban kisbetus (camel case) a metodus parameter(public void setMagyarSzavak(string[] magyarSzavak)), a masikban meg alahuzas + pascal case (public static void setMondatok(List<Mondat> _Mondatok))
- nem ertem, hogy miert van public (nem readonly) field-eknek kulon set-ter es get-ter irva. ha ezeket leszamitjuk, akkor a HasznalhatoMondatok osztalyod egy csupasz List<Mondat>, aminek nincs sok ertelme
- ne egess bele konkret tipusokat a kododba, ha nem muszaj. pl.: string[], List<Mondat> helyett siman IEnumerable<T>-t hasznalnek (lazabb kotes miatt)valoszinu, hogy vannak benne meg hibak (tervezesileg mindenkepp), de gondoltam ezeket megirom, hogy lasd mennyit kellene meg kalapalni rajta (szerintem).
-
Karma
félisten
válasz
trisztan94 #5061 üzenetére
Hazaértem, elolvastam, de... Ennek annyi köze van bármi objektumorientáltsághoz, mint egy vödör savas műtrágyának.
Tudod az objektumorientáltság, a nyelvtől függetlenül, nem arról szól hogy teleírod a kódod a class kulcsszóval. Amit eddig leírtál, ha egyszer azt is csinálja amit szeretnél, eddig kuka.
Az OO ott kezdődik, hogy szerepkörökre bontod a problémát. Ezeknek belső állapota van, amihez más nem nyúlhat. Van valami feladatuk, amit elvégeznek. A tieidre egyik se igaz.
Pedig Windows Phone-on nem kell még gondolkodni se nagyon rajta, mert adja magát egy MVP/MVVM felépítés. Csak meg kellene gondolni, mi az adat és mit kell vele csinálni.
Mivel nem értem hogy mi a feladatod (nincs nagy összhang a kód meg a pár mondat között), nem erőltetném hogy kitalálom helyetted. Az biztos pl., hogy egy szónak semmi köze ahhoz, hogy mondatban van-e vagy sem.
-
Alexios
veterán
válasz
trisztan94 #5063 üzenetére
var butt = (Button)buttons_first_row.Children.ElementAt(2);
vagy
var butt = buttons_first_row.Children.ElementAt(2) as Button;
-
DS39
nagyúr
válasz
trisztan94 #5061 üzenetére
típuskényszerítés?
-
trisztan94
őstag
Egy ténylegesen C# kérdés most:
XAML-ben a definiált GRID ahogyan észrevettem egyáltalán nem úgy működik, mint a Windows Forms-os.
3 sorban van összesen 12 gomb, random gomboknak szeretném a Content attribútumát változtatni, de sehogyan sem tudok rá hivatkozni..
<Grid x:Name="buttons_container" HorizontalAlignment="Center" VerticalAlignment="Bottom">
<Grid.RowDefinitions>
<RowDefinition Height="70"/>
<RowDefinition Height="70"/>
<RowDefinition Height="70"/>
</Grid.RowDefinitions>
<Grid x:Name="buttons_first_row" Grid.Row="0" Width="600">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<Button HorizontalAlignment="Center" Grid.Column="0" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="1" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="2" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="4" Content="" Foreground="White" Height="auto" Width="150" />
</Grid>
<Grid x:Name="buttons_second_row" Grid.Row="1" Width="600">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<Button HorizontalAlignment="Center" Grid.Column="0" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="1" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="2" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="4" Content="" Foreground="White" Height="auto" Width="150" />
</Grid>
<Grid x:Name="buttons_third_row" Grid.Row="2" Width="600">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<Button HorizontalAlignment="Center" Grid.Column="0" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="1" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="2" Content="" Foreground="White" Height="auto" Width="150" />
<Button HorizontalAlignment="Center" Grid.Column="4" Content="" Foreground="White" Height="auto" Width="150" />
</Grid>
</Grid>InterfaceDesigner-en próálható.
Tehát az a lényeg, hogy két random számom van: x és y. Az x az oszlopokat, az y a sorokat jelöli.
Ha pl. a 3-mat dob ki, akkor a 3. sor x. elemét szeretném módosítani.
Próbáltam így C#-ban:
buttons_first_row.Children.ElementAt(2)...ez szépen meg is találja a nekem kellő button-t (jelen esetben az első sor 3.), de módosítani sehogy sem tudom, ugyanis nincs .Content tulajdonsága a System.Windows.UIElement-nek.
Hogyan tudnám ezt szépen megoldani? Adjak minden gombnak egyedi nevet, aztán egy baromi nagy switch elágazással jelöljem ki őket?
-
trisztan94
őstag
Sziasztok!
Egy programozástechnikai kérdésem lenne:
Windows Phone 8-ra fejlesztek egy angol nyelvoktató alkalmazást. Két részre van osztva:
1. rész: írás és hallás alapján történő tanulás
2. rész: mondatok összeillesztéseA két rész szorosan kapcsolódik egymáshoz.
Az első rész működése:
Kirak a képernyőre két egyező mondatot egymás alá a program. Az egyik magyarul, a másik angolul. Felolvassa a magyart, vár 2mp-et majd felolvassa az angolt. Ezek után még ezt 4x megcsinálja, csak más mondatokkal.
Ez a része megvan.A második rész működése:
Az első részben megjelenített mondatokat kell újra összerakni. Kiírja a magyar mondatot, ennek az angol megfelelőjét kell összerakni 12 szóból, helyes sorrendben. Na most itt az az egyik fő dolog, hogy a 12 szóból 12-x random szó, az x pedig a mondatba való szavak nyilván (hogy ki lehessen rakni a mondatot).Na most ezt én próbáltam objektumorientáltan megoldani, úgyis rég dolgoztam már úgy, nem árt egy kis gyakorlás, meg hát sokkal szebb is úgy az egész.
Osztályok, felépítésük, egymáshoz való kapcsolatuk:
Először felsorolom az osztályokat:
ElsoResz
Mondat
Szo
HasznalhatoMondatok
Extraszavak
MasodikReszAz ElsoResz.cs-ben van az első rész logikája, tehát a random mondat kiválasztása a lehetséges mondatokból, annak a kiírása. Jelenleg egy sima void metódus tölti fel a mondatokat explicit módon, így:
private List<Mondat> Mondatok = new List<Mondat>();
private int idSzamlalo = 0;
private void mondatFeltoltes()
{
Mondat mondat = new Mondat(idSzamlalo, "Szeretem a fagyit.", "I like ice cream");
Mondatok.Add(mondat);
idSzamlalo++;
mondat = new Mondat(idSzamlalo, "Ő hol van?", "Where is she?");
Mondatok.Add(mondat);
idSzamlalo++;
mondat = new Mondat(idSzamlalo, "Annak tizennégy éves", "Ann is fourteen");
Mondatok.Add(mondat);
}Mondat.cs-ben van a mondatok felépítése, az így néz ki:
public class Mondat
{
public int ID;
public string magyar; //magyar mondat
public string angol; //angol mondat
public string[] angolSzavak; //mondat szavai (angol)
public string[] magyarSzavak; //mondat szavai (magyar, de most ez lényegtelen)
public Mondat(int ID, string magyar, string angol)
{
this.ID = ID;
this.magyar = magyar;
this.angol = angol;
}
public void setAngolSzavak (string[] angolSzavak)
{
this.angolSzavak = angolSzavak;
}
public string[] getAngolSzavak()
{
return angolSzavak;
}
public void setMagyarSzavak(string[] magyarSzavak)
{
this.magyarSzavak = magyarSzavak;
}
public string[] getMagyarSzavak()
{
return magyarSzavak;
}
}Amikor végigmentek a mondatok, akkor átlépünk a 2. részre. Oda úgy lépünk, hogy a kiírt mondatokat berakom egy statikus osztályba, a HasznalhatoMondatok.cs-be, ami így néz ki:
public static class HasznalhatoMondatok
{
public static List<Mondat> Mondatok = new List<Mondat>();
public static void setMondatok(List<Mondat> _Mondatok)
{
Mondatok = _Mondatok;
}
public static List<Mondat> getMondatok()
{
return Mondatok;
}
}Így rakom bele az ElsoResz.cs-ből navigálás előtt:
HasznalhatoMondatok.setMondatok(Mondatok);
Tehát beraktuk a mondatokat a HasznalhatoMondatok osztályba, átlépünk a 2. részre. A MasodikResz.cs-ben ez történik:
partial class MasodikResz : PhoneApplicationPage
{
private List<Mondat> mondatok = new List<Mondat>();
private int szavakSzama = 12;
//constructor
public MasodikResz()
{
mondatok = HasznalhatoMondatok.getMondatok();
foreach(var item in mondatok)
{
string[] mondatSzavai = item.angol.Split(' ');
}
InitializeComponent();
}
}Tehát letároljuk egy osztályon belüli listában a felhasznált mondatokat, majd utána .Split-eljük a mondatot, így szavak lesznek belőlük, amit majd a Mondat osztály angolSzavak mezőjébe rakunk majd be.
Ezeken kívül van még a Szo osztály, ami működésileg hasonló a Mondat osztályhoz:
class Szo
{
public string szo;
public bool isInMondat;
public Szo(string szo, bool isInMondat)
{
this.szo = szo;
this.isInMondat = isInMondat;
}
}És van még az ExtraSzavak osztály, ami szintén adatbázisból fog majd jönni, de most még explicit van feltöltve, de az is nagyon hasonló lesz a HasznalhatoMondatok osztályhoz, tehát statikus:
public static class ExtraSzavak
{
public static List<Szo> Szavak = new List<Szo>();
public ExtraSzavak()
{
szavakFeltoltese();
}
private void szavakFeltoltese()
{
Szo szo = new Szo("Banana", false);
Szavak.Add(szo);
szo = new Szo("House", false);
Szavak.Add(szo);
szo = new Szo("Dog", false);
Szavak.Add(szo);
szo = new Szo("Cat", false);
Szavak.Add(szo);
szo = new Szo("Apple", false);
Szavak.Add(szo);
szo = new Szo("Orange", false);
Szavak.Add(szo);
szo = new Szo("Pear", false);
Szavak.Add(szo);
szo = new Szo("Grape", false);
Szavak.Add(szo);
szo = new Szo("Boat", false);
Szavak.Add(szo);
szo = new Szo("Car", false);
Szavak.Add(szo);
}
public static void setSzavak(List<Szo> _Szavak)
{
// TODO: Complete member initialization
Szavak = _Szavak;
}
public static List<Szo> getSzavak()
{
return Szavak;
}(ez még nem komplett, vágom, hogy miket nem lehet statikus osztályba rakni, most fogom átírni)
Tehát az lenne a kérdésem, hogy nem bonyolítom-e túl, esetleg nem vétek-e egy hihetetlenül triviális hibát? A gondolatmenete jó a felépítésnek? Ti mit csinálnátok másképpen?
Előre is köszönök szépen minden segítséget és bocsánat a hosszúra sikeredett hsz.-ért
-
warchef
tag
Üdv!
Lehet, hogy rossz helyen járok, visual studioval kapcsoltatban szeretnék kérdezni. Evvel foglalkozó topicot azonban nem találtam.
Visual Studio 2013 Prof-ban local db-t szeretnék létrehozni, azonban a Server Explorer->DataConnections->DB->Tablesre jobb gombbal kattintva a lenyíló menüben nincs ott az Add new table. Utána olvastam, hogy ez a SSDT-ben van benne, ami elvben a studioval együtt feltelepül. Mi nincs még fent szerintetek?
-
MrSealRD
veterán
Silverliht5 és Blend. Textblock-okról van szó. Kivettem a pipát az embedből és most totál gánya az egész.
Futtatáskor valami hülye betűtípust rak be, meg valami teljesen más mértet mint amit beállítok neki...
Ha visszateszem az embedbe a pipát, meg a Font Managerbe is bepipálom a megfelelő betűtípust akkor is hulladék marad. A rossz méret miatt a felület szétesik...Mitől lehet ez?
-
K_Gabor
tag
Sziasztok!
Szükségem lenne egy kis segítségre egy hasonló almenü összerakásában.
Combobox megvalósítása,beolvasott fájl alapján választási lehetőségekkel feltöltése már megvan,de egy ilyen ráviszem az egeret és előugrik egy almenü történetet szeretnék belevarázsolni.WindowsFormsApp-ról van szó.
Serényen turkálok google-ben,de még nem sikerült megoldást találjak.Tudnátok mondani némi segítséget,hogy ezt mivel/hogyan tudnám megvalósítani?
Előre is köszönöm!
-
Shievone
újonc
Sziasztok,
A következő problémával találtam szembe magam:
Adott egy winform és rajta két darab TabControl komponens. Az egyik TabControl-on pedig van néhány TabPage. Két dolgot szeretnék megoldani:
1) A TagPage-ek sorba rendezhetők legyenek adott TabControl-on belül. (drag&drop technika)
2) A TabPage áthelyezhető legyen egyik TabControl-ból a másikba és akár vissza. (drag&drop technika)
Az 1) már készen van. Erre létrehoztam egy saját komponenst az alábbi kóddal, viszont a 2) ponthoz még a neten sem találtam használható infó:
public partial class customTabControl : TabControl
{
public customTabControl()
{
InitializeComponent();
this.AllowDrop = true;
}
protected override void OnMouseDown(MouseEventArgs e)
{
int hoverTabPageIndex = this.getHoverTabIndex();
if (hoverTabPageIndex >= 0)
{
this.Tag = this.TabPages[hoverTabPageIndex];
}
}
protected override void OnMouseUp(MouseEventArgs e)
{
this.Tag = null;
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (e.Button != MouseButtons.Left || this.Tag == null) return;
TabPage draggedTabPage = (TabPage)this.Tag;
this.DoDragDrop(draggedTabPage, DragDropEffects.All);
}
protected override void OnDragOver(DragEventArgs e)
{
if (e.Data.GetData(typeof(TabPage)) == null) return;
TabPage draggedTabPage = (TabPage)e.Data.GetData(typeof(TabPage));
int draggedTabPageIndex = this.TabPages.IndexOf(draggedTabPage);
int hoverTabPageIndex = this.getHoverTabIndex();
if (hoverTabPageIndex < 0) { e.Effect = DragDropEffects.None; return; }
TabPage hoverTabPage = this.TabPages[hoverTabPageIndex];
e.Effect = DragDropEffects.Move;
if (draggedTabPage == hoverTabPage) return;
Rectangle dragTabPageRect = this.GetTabRect(draggedTabPageIndex);
Rectangle hoverTabPageRect = this.GetTabRect(hoverTabPageIndex);
if (dragTabPageRect.Width < hoverTabPageRect.Width)
{
Point tcLocation = this.PointToScreen(this.Location);
if (draggedTabPageIndex < hoverTabPageIndex)
{
if ((e.X - tcLocation.X) > ((hoverTabPageRect.X + hoverTabPageRect.Width) - dragTabPageRect.Width))
this.swapTabPages( draggedTabPage, hoverTabPage);
}
else if (draggedTabPageIndex > hoverTabPageIndex)
{
if ((e.X - tcLocation.X) < (hoverTabPageRect.X + dragTabPageRect.Width))
this.swapTabPages(draggedTabPage, hoverTabPage);
}
}
else
{
this.swapTabPages(draggedTabPage, hoverTabPage);
}
this.SelectedTab = draggedTabPage;
}
private int getHoverTabIndex()
{
for (int i = 0; i < this.TabPages.Count; i++)
{
if (this.GetTabRect(i).Contains(this.PointToClient(Cursor.Position)))
return i;
}
return -1;
}
private void swapTabPages(TabPage draggedTabPage, TabPage hoverTabPage)
{
int draggedTabPageIndex = this.TabPages.IndexOf(draggedTabPage);
int hoverTabPageIndex = this.TabPages.IndexOf(hoverTabPage);
this.TabPages[hoverTabPageIndex] = draggedTabPage;
this.TabPages[draggedTabPageIndex] = hoverTabPage;
this.Refresh();
}Valakinek ötlete esetleg?
Előre is köszönök minden építő jellegű hozzászólást.
-
Des1gnR
őstag
Sziasztok!
Elkezdtem egy kis programot, amely letöltené egy weboldal forráskódját.
Az oldal kódját csak úgy érem el ha előtte bejelentkezek a főoldalon.
Csináltam már egyszer ilyet, akkor minden rendben ment, most valamiért nem akar működni a dolog.
A főoldal html kódját letölti, ám az aloldalét nem. Szerintetek mi lehet a gond?CookieContainer loginCookie;
public void Fooldal()
{
string postData = "user=username&returnto=&pass=password&muz=2&ok=Bel%E9p%E9s";
CookieContainer tempCookies = new CookieContainer();
UTF8Encoding encoding = new UTF8Encoding();
byte[] byteData = encoding.GetBytes(postData);
HttpWebRequest postReq = (HttpWebRequest)WebRequest.Create("http://azoldal/glogin.php");
postReq.Method = "POST";
postReq.KeepAlive = true;
postReq.CookieContainer = tempCookies;
postReq.ContentType = "application/x-www-form-urlencoded";
postReq.Referer = "http://azoldal.hu/glogin.php";
postReq.UserAgent = "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.10.229 Version/11.61";
postReq.ContentLength = byteData.Length;
Stream postreqstream = postReq.GetRequestStream();
postreqstream.Write(byteData, 0, byteData.Length);
postreqstream.Close();
HttpWebResponse postresponse = null;
postresponse = (HttpWebResponse)postReq.GetResponse();
tempCookies.Add(postresponse.Cookies);
loginCookie = tempCookies;
StreamReader postreqreader = new StreamReader(postresponse.GetResponseStream());
}
public string Aloldal(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = loginCookie;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string linkSourceCode = reader.ReadToEnd();
return linkSourceCode;
}
} -
thiclyoon
aktív tag
nem, nem a pont és a vessző a gond..
és az mitől lehet, hogy azon a gépen csak hozzá "add-oltam" egy txt-t, itt meg ha hozzá add-olok, akkor azzal nem is foglalkozik; rögtön a Debug mappában keresi
1. eset: Debug-ba bemásolom kézzel a txt-t, ekkor a double-nél akad el
2. eset: Debug-ba nem másolom be (mint a másik gépen), akkor ezt adja ki:
"Additional information: Nem található a következő fájl: „D:\.....\bin\Debug\xyz.txt”." -
fatal`
titán
válasz
thiclyoon #5049 üzenetére
Másik gépen megegyezik az oprendszer területi beállíása? Doublenél szokott olyan gond lenni, hogy angol-szász területi beállítás esetén tizedespont, Magyarországon viszont tizedesvessző van, ezért nem tud parseolni. Illetve tud, csak amikor parseolsz, akkor be kell állítani a culturet.
-
thiclyoon
aktív tag
sziasztok,
van egy "programom", amit egy másik gépen csináltam, hazajöttem, de itt már nem működik..
"Additional information: Nem megfelelő a bemeneti karakterlánc formátuma."
ezt írja ki, miközben egy sort feldaraboltam string-ekké, és konvertálnám double-re
mi lehet a gond? -
trisztan94
őstag
válasz
Peter Kiss #5047 üzenetére
Na jó, ezt most fejezzük be, mert kezd a tokom tele lenni veled.
-
Peter Kiss
őstag
válasz
trisztan94 #5042 üzenetére
Mondjuk te is elolvashatnád a Trey Nash könyvet, van egy olyan érzésem...
-
Karma
félisten
válasz
kalorobi #5044 üzenetére
Két dolog:
1) Van könyv kategória.
2) A topikban hirdetés alapszabályzatban tiltott, nem ilyen "nem érdekli nem nézi meg" kategória. -
kalorobi
csendes tag
válasz
trisztan94 #5042 üzenetére
Azért nem OFF mert programozással kapcsolatos. Igaz, hogy van az apró, de ott meg könyv kategória nincs.
Az meg hogy 6 éves könyv... Az objektumorientált programozás elvei nem változtak. A nyelvben vannak új dolgok, de az alapok maradtak... Ezek a könyvek, pedig pont erről szólnak.
Ha valakit érdekel, megnézi, alkudozik, megveszi. Ha nem érdekli, nem nézi meg.
-
trisztan94
őstag
válasz
kalorobi #5041 üzenetére
Na mar miért venne az ember könyvet 2.500-ért egy 6 evvel ezelőtti C# verzióhoz, amikor akar olcsóbban is megkapod e-book formában, sot, van egy teljes C# könyv teljesen ingyen, jogtisztan az interweben?
Es ez miért nem off? Pontosan melyik része illik a topik témájához?
-
kalorobi
csendes tag
Sziasztok!
Eladó egy pár C# programozással kapcsolatos könyv:
http://aprod.hu/hirdetes/bradley-l-jones-c-mesteri-szinten-konyv-ID1NB1z.html
http://aprod.hu/hirdetes/jason-price-c-adatbazis-programozas-ID1NAYT.htmlJuval Lövy: .Net komponensek programozása. (1.500 Ft)
Trey Nash: C# 2008 könnyen is lehet. (2.500 Ft)Hátha valakit érdekel.
-
Karma
félisten
válasz
Peter Kiss #5038 üzenetére
Csak sajnos nagy része, ami Guiddal operál, helytelen
-
trisztan94
őstag
válasz
Peter Kiss #5038 üzenetére
Pont ez az, egy "neves" számítástechnikai suliba jártam, a térség legjobbja.
-
metrion
aktív tag
válasz
trisztan94 #5036 üzenetére
Nem beadandóhoz kellett, hanem a vizsgámhoz
Ez volt a vizsgán és még ebből is hiányzik a sorcsere, számbekéréssel: [link]
-
trisztan94
őstag
válasz
Peter Kiss #5033 üzenetére
Középiskolában egyest kaptam az ilyen megoldásokra, mert csak azt lehetett használni amit órán tanítottak (meg struktogramot kellett rajzolni, mert az nyelvfuggetlen), ezért is írtam neki le a dupla ciklusos módszert, amivel a beadandóját kell csinálni.
-
Karma
félisten
válasz
Peter Kiss #5033 üzenetére
Én removeAt helyett jobban szeretem ezt a technikát.
-
metrion
aktív tag
válasz
Peter Kiss #5033 üzenetére
Szia!
Értékelem a segítséged, de én még nem járok ezen a szinten.
-
Peter Kiss
őstag
válasz
metrion #5031 üzenetére
Csak a rend kedvéért, ilyen random feltöltős dolgokat nem így szokás megoldani, hanem egy kicsivel más technikával:
class Program
{
private const int Dim1 = 5;
private const int Dim2 = 5;
private const int Start = 10;
private static int CalculateNumberCollectionRangeLength()
{
return Dim1 * Dim2;
}
static void Main()
{
var numberCollection = Enumerable.Range(Start, CalculateNumberCollectionRangeLength()).ToList();
var random = new Random();
var table = new int[Dim1, Dim2];
for (var i = 0; i < Dim1; i++)
{
for (var j = 0; j < Dim2; j++)
{
var selectedIndex = random.Next(0, numberCollection.Count);
table[i, j] = numberCollection[selectedIndex];
numberCollection.RemoveAt(selectedIndex);
}
}
}
}A lényeg, hogy egy generált halmazból választjuk random módra az elemeket, nem pedig random elemekkel dolgozunk.
-
metrion
aktív tag
válasz
trisztan94 #5030 üzenetére
Már megoldódott.
-
trisztan94
őstag
válasz
metrion #5029 üzenetére
Könyörgöm, pár hsz.-el korábban magyaráztam el a kétdimenziós tömbök lényeget és be is linkeltem egy könyvet amiben utánajárhatsz a dolgoknak..
Meg ne várd mar el, hogy az idehányt kódrészleteket megcsináljuk. Normális kérdés jó lenne.. Pontosan mi a probléma, mit nem tudsz? Az, hogy nem működik, segítsetek nem a legjobb fajta kérdés, ezt te is bevallhatod..
-
metrion
aktív tag
Sziasztok!
Ebbe tudnátok segíteni?
A lényeg, hogy kétdimenziós tömbbe nem lehet szám ismétlődés.
Egydimenziós tömbös verzió kész, de nem tudom, hogy kéne átírni 2D-re. :S
Random rnd = new Random();
int[] tomb = new int[5];
int i=0;
while(i<5)
{
tomb[i] = rnd.Next(10, 100);
int x = 0;
while ((x<=i)&&(tomb[x] != tomb[i]))
{
x++;
}
if (x == i)
{
i++;
}
}
for (i = 0; i < 5; i++)
{
Console.WriteLine(tomb[i]);
}
Console.ReadKey();
}
}
} -
metrion
aktív tag
válasz
trisztan94 #5026 üzenetére
És tényleg, nagyon köszi, jól működik!
-
trisztan94
őstag
válasz
metrion #5024 üzenetére
Na most vagy én vagyok nagyon fáradt, vagy te.
if (max > t[x, y])
{
max = t[x, y];
}Ez szavakkal leírva a következő:
HA max változó értéke NAGYOBB, mint az aktuálisan vizsgált tömbelem értéke
AKKOR
max értéke legyen az aktuálisan vizsgált tömbelem értékeTehát így sosem a legnagyobb lesz benne.
if (max < t[x, y])
{
max = t[x, y];
}Így ez lesz leírva:
HA max változó értéke KISEBB, mint az aktuálisan vizsgált tömbelem értéke
AKKOR
max értéke legyen az aktuálisan vizsgált tömbelem értékeMivel ha max kisebb, mint a vizsgált elem, így a nagyobb érték lesz a max értéke. Érted?
Ha így sem jó, akkor szvsz a program azon részével lesz gond, ahol feltöltöd a tömböt elemekkel.
-
metrion
aktív tag
válasz
trisztan94 #5022 üzenetére
Most ez: Error 1 No overload for method 'Max' takes 1 arguments
-
trisztan94
őstag
válasz
metrion #5021 üzenetére
A max nevű változó nem létezik az aktuális kontextusban, ergó nincs definiálva.
static void Main(string[] args)
{
int[,] t = new int[5, 5];
int max = 0;
Random r = new Random();
Felt(t, r);
Kiir(t);
Console.WriteLine();
Console.WriteLine("A max: {0}", Max(ref max));
Kiir(t);
Console.ReadKey();
} -
metrion
aktív tag
válasz
trisztan94 #5020 üzenetére
Na már csak 1 hiba: Console.WriteLine("A max: {0}", Max(max));
Error 1 The name 'max' does not exist in the current context
-
trisztan94
őstag
válasz
metrion #5019 üzenetére
Első ránézésre: a ciklusokon kívülre rakd a return max-ot:
static int Max(int[,] t, ref int max)
{
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 5; y++)
{
if (max > t[x, y])
{
max = t[x, y];
}
}
}
return max;
}ha így sem jó, pakold fel a progit ide.
Ja és
if (max > t[x, y])
{
max = t[x, y];
}nem jó, helyette:
if (max < t[x, y])
{
max = t[x, y];
}Ugye ha nagyobb az elem, mint a max, akkor adjuk a max értékéül.
-
metrion
aktív tag
válasz
trisztan94 #5018 üzenetére
Kezdem feladni: static int Max(int[,] t, ref int max)
{
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 5; y++)
{
if (max > t[x, y])
{
max = t[x, y];
}
}
return max;
}
}
static void Main(string[] args)
{
int[,] t = new int[5, 5];
Random r = new Random();
Felt(t, r);
Kiir(t);
Console.WriteLine();
Console.WriteLine("A max: {0}", Max(ref max));
Kiir(t);
Console.ReadKey(); -
trisztan94
őstag
válasz
trisztan94 #5015 üzenetére
igen, elírtam a végén az if()-et.
Ha max KISEBB, mint TOMB[i,j], akkor adjuk a max értékének a tömb i.,j. elemét
-
amargo
addikt
válasz
metrion #5014 üzenetére
Látod ez is a megoldások között van. Szépen alakul ez, esetleg a dimenzió méretét lekérdezhetnéd a ciklus feltételekben, ugyan feltételezed, hogy ki van töltve a tömb, de erre nem tudjuk mi a garancia. Az első sor után visszatérsz a max-al, de persze a többit még nem nézted meg, de szerintem itt csak elnézted a { jelet
-
metrion
aktív tag
válasz
trisztan94 #5015 üzenetére
Köszi, de holnapra kéne és nem tudok rájönni.
Tuti valami apró hiba.
-
trisztan94
őstag
válasz
metrion #5012 üzenetére
Ajánlom figyelmedbe Reiter István C# jegyzetét, abban benne vannak ezek elég érthető módon.
Azért leírom a maximum kiválasztás és kétdimenziós tömbök lényegét, elméleti alapon:
Van egy tömböd, legyen most kétdimenziós. Annak van x és y értéke. Az x a sorokat, az y az oszlopokat jelöli. A legcélszerűbb úgy haladni, hogy végigmész egy sor összes oszlopán, majd mész a következő sorra.
Tehát pl, ha a tömböd [5,5] nagyságú, akkor az azt jelenti, hogy 5 sor és 5 oszlop van benne. Kicsit olyasmi, mint az aknakereső felépítése, ott is sorokra és oszlopokra van felosztva a játéktér.
Na most azért kell neked 2 for ciklus, mert az egyikkel a sorokat, a másikkal pedig az oszlopokat lépteted. A külső ciklus a sorokat, a belső az oszlopokat.
for (int i = 0; i< 5; i++)
{
//ez a külső ciklusod.
for (int j = 0; j < 5; j++)
{
//ez a belső ciklusod
}
}Elkezdi a for ciklust, beállítja a sorszámot nullára, majd belép az első oszlopba a belső ciklussal, ott végrehajt egy műveletet, majd növeli a sorszámot egyel.
Na, így durván ennyi a kétdimenziós tömb lényege. Most vegyük át a maximum kiválasztást, ami baromi egyszerű. Az a lényeg, hogy megnézzük, hogy az oszlop értéke amiben vagyunk nagyobb-e a mi változónknál.
pl.
változónk értéke 100
itt a tömb, ahol tömb = [2,5], tehát 2 sor és 2 oszlop
1.sor
1. oszlop érték = 95. kisebb, mint 100, átugorjuk
2. oszlop érték 150. Nagyobb, mint 100, beálltjuk a változónk értékét erre az értékre (tehát változó = tömb[i,j])
3. oszlop érték 70. Nem nagyobb, átugorjuk
4. oszlop 1000. Nagyobb, berakjuk a változó értékének
5. oszlop 80 és ez így folytatódik tovább
2. sor
1. oszlop 50
2. oszlop 12
3. oszlop 06
4. oszlop 343
5. oszlop 34Tényleges kódban:
int tomb[,] = new int[2,5];
int max = 0;
for(int i = 0; i < 2; i++)
{
for (int j = 0; j < 5; j++)
{
if(max > tomb[i,j])
{
max = tomb[i,j];
}
}
}lehetnek benne elírások, de valahogy így néz ki.
Remélem mostmár világosabb
-
metrion
aktív tag
-
metrion
aktív tag
válasz
trisztan94 #5011 üzenetére
De ez nem kétdimenziós. :S Megpróbáltam de nem jött össze.
-
metrion
aktív tag
Sziasztok!
Kétdimenziós tömb elemeit, hogy lehet csökkenőbe rendezni?
A növekvő megvan: static void Novekvo(int[,] t)
{
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 4; y++)
{
int min = y;
for (int i = y + 1; i < 5; i++)
if (t[x, i] < t[x, min])
min = i;
if (min != y)
{
int csere = t[x, min];
t[x, min] = t[x, y];
t[x, y] = csere;
}
}
}
}Ez kell csak fordítva?
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Lenovo ThinkPad T14 Gen 5 Ultra-I7/64GB/512SSD/Érintőképernyő/garancia
- Lenovo ThinkPad T14 G3 I5-1245U/32GB/1TBSSD/Érintőképernyő/Garanciás.
- Dell Precision Munkaállomás 7750 17.3" i7-10850H/32GBRAM/1TBSSD/RTX3000/WIN11PRO
- EREDETI Apple Watch ULTRA óraszíjak (BLACK TITANIUM) - 49mm
- Apple Watch ULTRA 2 49 mm - Black Titan, Black Ocean Band - MAKULÁTLAN! - 3 ÉV GARANCIA
- BESZÁMÍTÁS! MSI Z77 MPOWER Z77 chipset alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! Asrock H310CM i5 9400F 16GB DDR4 240GB SSD 1TB HDD RTX 2060 Super 8GB Zalman Z1 700W
- Realme 7i 64GB, Kártyafüggetlen, 1 Év Garanciával
- PlayStation Plus Premium előfizetés 3291 Ft / hó áron!
- Bomba ár! Lenovo ThinkPad T490s - i5-8GEN I 16GB I 512SSD I 14" FHD I Cam I W11 I Gari!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest