- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- bambano: Bambanő háza tája
- Gurulunk, WAZE?!
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
- Chosen: Canon 5D II - portrézás 2025-ben
Új hozzászólás Aktív témák
-
ArchElf
addikt
válasz
Briganti #1198 üzenetére
Igen, ahogy zeratul kolléga is mondja...
OleDbParameterAE
-
bpx
őstag
válasz
Briganti #1198 üzenetére
szerintem arra gondolt, hogy a query stringet hivatalosan nem így szokás "összeollózni" változóbehelyettesítéssel, hanem van egy kész query stringed, amiben jelölöd hogy mik a paraméterek, majd a megfelelő függvényekkel megadod, hogy melyik paraméter helyére melyik változót értéke kerüljön (ami azért jobb így, mert le lesz ellenőrizve, hogy mi kerül oda, és ezáltal véd az sql-injection ellen)
no meg valamennyire olvashatóbb is lesz szerintem
-
Briganti
tag
Egy kis erorral gyult meg kicsit a bajom, es nem talalom sehol a megoldast
van egy dbUtils.cs osztalyom, amibe van nehany adatbazis muvelet vegzo fugveny .... pontosabban van egy a torlesre, ami igy nez ki:
public static void executeDeleteQuery(string qText)
{
try
{
openConnection();
dbAdapter = new OleDbDataAdapter();
dbCommand = new OleDbCommand(qText, dbConnection);
dbAdapter.DeleteCommand = dbCommand;
dbAdapter.DeleteCommand.ExecuteNonQuery();
closeConnection();
}
catch
{
MessageBox.Show("Hiba a torlesnel");
}
}a hivas pedig igy nez ki:
string query = "DELETE FROM firme WHERE firma_cod='" + selected_id + "'";
dbUtils.executeDeleteQuery(query);A sor amire kiirja, es amit kiir:
dbAdapter.DeleteCommand.ExecuteNonQuery();
Data type mismatch in criteria expression.
Tobb mukodo peldaba latam hogy igyvan, es mukodik, please valaki segitsen
-
ArchElf
addikt
Hát, ha a string műveletek nem mennek... pl (nem futtatható, csak pszeudokód):
Ez a legegyszerűbb:
List<string> Mezőnevek;
string insertcolstr = "";
foreach (stirng Név in Mezőnevek)
insertcolstr += "[" + Név +"],";
insertcolstr.TrimEnd(',');
List<string> MezőÉrtékek;
string inservalstr = "";
foreach (stirng Érték in MezőÉrtékek)
inservalstr += "[" + Érték +"],";
inservalstr.TrimEnd(',');
string insertstr = "INSERT INTO tablanev ({0}) VALUES ({1})";
DbCommand cmd = connection.CreateCommand();
cmd.CommandString = string.Format(insertstr, insertcolstr, inservalstr);
cmd.ExecuteNonQuery();[De ez bizonságosabb:
Dictionary<string, object> Mezőértékek;
string insertcolstr = "";
foreach (stirng Név in Mezőértékek.Keys)
{
insertcolstr += "[" + Név +"],";
inservalstr += "@" + Név +",";
}
insertcolstr.TrimEnd(',');
string insertstr = "INSERT INTO tablanev ({0}) VALUES ({1})";
foreach (stirng Érték in MezőÉrtékek)
DbCommand cmd = connection.CreateCommand();
cmd.CommandString = string.Format(insertstr, insertcolstr, inservalstr);
foreach (object Érték in Mezőértékek.Values)
cmd.Parameters.Add(Érték);
cmd.Prepare();
cmd.ExecuteNonQuery();AE
-
hBd
csendes tag
Udv mindenkinek!
Lenne egy kerdesem ado.net temaban, nos egy olyan alkalmazast keszitek ahol tetszoleges *.mdb (acces adatbazis) fajlokat lehet megnyitani, azok tablainak tartalmat kiiratni, komboboxbol lehet kivalasztani hogy melyik tablat szeretnem megnyitni stb.
Ahol elakadtam az a uj elem hozzaadasa egy adott tablahoz. Mivel nem tudom hogy hany oszlopa van a tablanak elore, ezert egy tombbe szedi ki a tablaneveket, nos ez meg is van csak mikor szeretnem feltolteni az adatokat, akkor van a gond.
Az alap sql parancs az ugye INSERT INTO tablanev (oszlopok...) VALUES (adatok...)
es itt nem tudom hogy lehetne megoldani hogy az sql parancsba hogy tudnam a valtozo szamu oszlop neveket berakni, no meg az adatok az ugyanugy. Mivel string be kene tarolni a parancsot, ezert for nemigazan mukodik pedig az kene :|
valami otlet hogy tudnam megoldani ? -
Immy
őstag
válasz
ArchElf #1188 üzenetére
Üdv
A hookolásról csak olvastam, saját magam még nem próbáltam ki, mert normális leírást, tutorialt nem találtam hozzá.
Controlokat hogyan tudom lekérni? (bocsi, de ez nekem még magas)(Nem hackelni akarok hanem csak adatokat kinyerni, ami akár lehet kép, akár szöveg, de szerintem a szöveg nehezebb)
Figyeltem a hálózati forgalmat wireshark-al:
https kapcsolaton megy a forgalom + azt hiszem rsa2-es védelem van még a küldött/fogadott szövegeken --> ez számomra feltörhetetlen. -
-
ArchElf
addikt
Valószínűleg nem texbox-ba írja ki az értékeket, hanem mondjuk egy sima control-ra grafikusan (Graphics DrawString). Ezt is meg lehet hackelni (már ha a hook-olás már megy), csak el kell térítened a megfelelő függvényt, hogy megkapd az átadott értéket.
Ha ez nem megy, megpróbálkozhatod a kontrol helyét meghatározni és utána leszedni a képet:
http://www.vcskicks.com/capture-control-graphics.phpAE
-
Immy
őstag
Na arra rájöttem, hogy az újabb póker progrikban már levan tiltva ez a hookolás vagy valami csűrés csavarás útján nemlehet lekérdezni a textjeit.
Szóval marad a favágó módszer és megpróbálkozok a kártyalapok felismerésével.
Képek összehasonlítása már megy.Viszont olyan gondom van, hogy 1 bizonyos ablakról hogyan lehet screenshot-ot csinálni?
Üdv: Immy
-
Briganti
tag
hogyan lehet ellenorizni hogy egy datasetben letezike egy dataTable?
nem talaltam semmi jobbat, es megoldottam egy try ... catch -el, de sztem van ennel jobb megoldas
Igy nez ki az en megoldasom, es az lenne a lenyeg hogy ha mar letezik a dataTable akkor azt uritse ki ...
try { dsFirmAdmin.Instance.Tables["Firme"].Clear(); }
catch { }
dbAdapter.Fill(dsFirmAdmin.Instance, "Firme");... valahogyan csak le lehet ellenozrizni hogy letezike az a tabla, gondoltam egy for-l vegig menni az egesszen, de annal meg ez is jobbnak tunik
-
Briganti
tag
megoldottam ... kulon fugvenybe raktam minden feltoltest, s csak hivogatom azokat
-
Briganti
tag
Hello, egy kis segitsegre lenne szuksegem:
Van egy dataset-em, amit a kovetkezo keppen toltok fel:
public string qFirme = "SELECT f.firma_cod, f.denumire, f.cif, j.denumire, f.tip " +
"FROM firme AS f INNER JOIN judet AS j " +
"ON f.judet=j.judet_cod";
...
private void frmLoad_Load(object sender, EventArgs e)
{
conn = new OleDbConnection(strconn);
OleDbCommand cFirme = new OleDbCommand(qFirme, conn);
OleDbCommand cJudete = new OleDbCommand(qJudete, conn);
DataTable tdFirme = new DataTable("Firme");
DataTable tdJudete = new DataTable("Judete");
OleDbDataAdapter daFirme = new OleDbDataAdapter();
OleDbDataAdapter daJudete = new OleDbDataAdapter();
daFirme.SelectCommand = cFirme;
daJudete.SelectCommand = cJudete;
daFirme.Fill(tdFirme);
daJudete.Fill(tdJudete);
dsFirmAdmin.Instance.Tables.Add(tdFirme);
dsFirmAdmin.Instance.Tables.Add(tdJudete);
}Van egy frmAdd ahol hozzaadok a firme tablahoz egy rekordot, es van egy frmFirma ahol kilistazom a firme tablazatot ... ezt a dataGridViewet ugy toltom fel hogy:
public void fillDataGrid()
{
// A DataGrid feltöltése.
try
{
dtview = dsFirmAdmin.Instance.Tables[0].DefaultView;
dgFirma.DataSource = dtview;
}
catch (Exception e)
{
MessageBox.Show("Hiba az adatbazis megnyitasanal: " + e.Message,"Vizualizare Firma",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}Miutan hozzaadtam egy rekordot valahogy kellene frissitsem a datasetet, mert a form Shown esemenyen hivodik meg a fillDataGrid() fuggveny.
valami olyasmi kellene hogy:
dsFirmAdmin.Instance.Tables[1].Refresh();
.... de nincs
koszi elore is!
-
ArchElf
addikt
fileinfo.moveto plusz:
//3 char levágása
string filename = @"c:\akármi\akárhol\123456.txt";
string new_filename = filename.Substring(0, filename.LastIndexOf('\\')+1) + filename.Substring(filename.LastIndexOf('\\') + 4);Ez most csak bemutásra, egy kis hibakezelés azért kellene még bele, pl filenév hossz ellenérzés.
AE
-
ArchElf
addikt
Úgy nézem kimaradt a sor, ahol átneveznéd a fájlokat
Kiterjesztés megváltoztatására:
Path.ChangeExtension(string path, string extension);
vagy tudsz mozgatni fájlokat a fileinfo osztály segítéségvel.AE
-
Cyno
tag
Sziasztok!
Írok egy kis scriptet, ami állományokat mozgat ide-oda, és a végén adott helyen átnevezi azokat. Na itt akadtam el.
Ezzel póbálkoztam:
string[] fileNames2 = Directory.GetFiles(destinationPath);
// string fileNames8;
Console.WriteLine("Az átnevezni kivánt állományok");
foreach (string str in fileNames2)
{
Console.WriteLine("Állomány: {0}", str);
Console.WriteLine("Az átnevezés után az állományok: {0}", str.Remove(8));
}
De semmi eredménye. Arra rájöttem, hogy string típusú tömbél nem működik a .Remove. Tulajdonképen az állományok kiterjesztését szeretném csak eltávolítani, adott nevű(hosszúságú) file-oknál. -
Immy
őstag
Üdv
Képfelismerős programot akarok írni a közeljövőben és nem nagyon találok hozzá anyagot.
Kártyalapokat kellene felismernie --> csak 52 lehetőség közül kell kiválasztani a jót.(más: az ocr programok csak betűt ismernem fel?)
Tudom hogy nagy fába vágom a fejszét, de nem 1hét leforgása alatt akarom megcsinálni a programot ami screenshot alapján megmondja milyen kártyalap van kézben.
Köszönöm előre is a válaszokat:
Immy
-
Bumbi0
csendes tag
válasz
ArchElf #1161 üzenetére
Úgy néz ki elakadtam!
Ennek http://www.codeproject.com/KB/threads/winspy.aspx és a fentebb beszúrt linkeknek a segitségével próbálom megoldani, hogy más program memóriájában tudjak keresni.
A most linkelt linken a 3. módszer próbálom megvcalósitani, a kód injektálást a program memóriájába. Ott egy ilyen összegzés látható:
Now, we can summarize this technique in the following steps:
1, Retrieve a HANDLE to the remote process (OpenProces).
2, Allocate memory in the remote process's address space for injected data (VirtualAllocEx).3, Write a copy of the initialised INJDATA structure to the allocated memory (WriteProcessMemory).
4, Allocate memory in the remote process's address space for injected code.
5, Write a copy of ThreadFunc to the allocated memory.
6, Start the remote copy of ThreadFunc via CreateRemoteThread.
7, Wait until the remote thread terminates (WaitForSingleObject).
8, Retrieve the result from the remote process (ReadProcessMemory or GetExitCodeThread).
9, Free the memory allocated in Steps #2 and #4 (VirtualFreeEx).
10, Close the handles retrieved in Steps #6 and #1 (CloseHandle).Elvileg az első kettőt megcsináltam, de nem értem hogy milyen kódot kéne bejuttatnom a process memóriájába!
Az előző hozzászólásban emlitett linkenhez (http://www.codeproject.com/KB/threads/MDumpAll.aspx) hasonló dolog kellene, hogy csak simán a Process memóriában stringet keresni, az egész C-ben van megirva és nem sokat értek belőlle!
Sajnos nem tudom, hogy folytathatnám tovább. Azt nem értem, hogy a ProcDumpos linken nem is emlitenek DLL/kód injektálást és tud a memóriában olvasni, a másik módszernél akkor miért kell?
Előre is köszönöm szépen a segitségeteket!
Eddig igy néz ki a kód:
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);[DllImport("kernel32.dll")]
static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, UInt32 dwProcessId);[Flags]
enum ProcessAccessFlags : uint
{
All = 0x001F0FFF,
Terminate = 0x00000001,
CreateThread = 0x00000002,
VMOperation = 0x00000008,
VMRead = 0x00000010,
VMWrite = 0x00000020,
DupHandle = 0x00000040,
SetInformation = 0x00000200,
QueryInformation = 0x00000400,
Synchronize = 0x00100000
}[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, UInt32 dwSize, AllocationType flAllocationType, MemoryProtection flProtect);[Flags]
public enum AllocationType : uint
{
Commit = 0x1000,
Reserve = 0x2000,
Decommit = 0x4000,
Release = 0x8000,
Reset = 0x80000,
Physical = 0x400000,
TopDown = 0x100000,
WriteWatch = 0x200000,
LargePages = 0x20000000
}[Flags]
public enum MemoryProtection : uint
{
Execute = 0x10,
ExecuteRead = 0x20,
ExecuteReadWrite = 0x40,
ExecuteWriteCopy = 0x80,
NoAccess = 0x01,
ReadOnly = 0x02,
ReadWrite = 0x04,
WriteCopy = 0x08,
GuardModifierflag = 0x100,
NoCacheModifierflag = 0x200,
WriteCombineModifierflag = 0x400
}void str_Hotkey()
{
IntPtr hwnd, processHandle, remoteBuffer;
uint threadID, procID = 0;
const uint bufferSize = 1024;hwnd = GetWindowUnderCursor(); // Window handle-jének az átadása
GetWindowThreadProcessId(hwnd, out procID); // Window handle-ből ProcessID-nek a visszakapása
processHandle = OpenProcess(ProcessAccessFlags.All, true, procID); // Elvileg a process megynitása
remoteBuffer = VirtualAllocEx(processHandle, IntPtr.Zero, bufferSize, AllocationType.Commit, MemoryProtection.ExecuteWriteCopy); // Elvileg a process memóriájában foglal le memóriát a kódnak.}
-
bpx
őstag
válasz
Vasinger! #1167 üzenetére
ezügyben már írtál ide egyszer^^
beírod a szöveget, a program feldolgozza, kiírja az eredményt, majd kilép, mert nincs más dolga - ez olyan gyorsan történik, hogy nem látsz belőle semmit, csak azt hogy kilép- indíthatod debug nélkül (Ctrl + F5), és akkor a végén még vár egy bármilyen billentyűleütésre
- vagy beírsz a program legvégére egy Console.Readline()-t és akkor még vár egy enterre mielőtt kilépne -
bpx
őstag
válasz
Vasinger! #1164 üzenetére
1.
string nev ="Dr. " + Console.Readline();2.
string szoveg = Console.ReadLine();
for (int i = 0; i < szoveg.Length; )
{
if (szoveg[i] == ' ')
{
szoveg = szoveg.Remove(i, 1);
continue;
}
i++;
}
Console.WriteLine("{0} karakter", szoveg.Length);3.
string nev = Console.ReadLine();
nev = nev.Substring(nev.LastIndexOf(' ') + 1); -
bpx
őstag
válasz
Vasinger! #1162 üzenetére
1. beolvasás Console.ReadLine()-nal
stringeken működik a + operátor, azzal össze lehet fűzni őket2. pl. egy ciklussal végigmész a karaktereken egyesével (a string-et lehet indexelni, ami egy karaktert ad vissza - szoveg[0]), és ha szóköz, akkor törlöd (string.Remove())
végén meg string.Length megadja a string hosszát3. megkeresed az utolsó szóközt (string.LastIndexOf(' '), így a dupla vezetéknevekre is működik), és a string utána levő részét veszed (string.SubString())
-
Vasinger!
nagyúr
Az előbb eltévedtem, ide kellett volna ezt feltennem: [link]
Pls help!
-
ArchElf
addikt
A válasz ott van a linkelt oldalon:
"There is one catch here though. In order for this to work, I call the AdjustPrivileges function in the same module as WinMain to give this application debug rights. Otherwise OpenProcess with PROCESS_ALL_ACCESS fails. This code is straight out of the MSDN Knowledge base - Article ID: Q131065"
Bár a MS oldalon azt írja, hogy csak a rendszerprocesszek debuggolásához kell a SeDebugPrivilege, de valószínűleg a kérdéses API nem működik nélküle, függetlenül attól, hogy nem system, hanem user process memóriáját akarod megnézni.AE
-
-
ArchElf
addikt
Ezt managelt kódban már valószínűleg nem fogod tudni megcsinálni. Ez már inkább C/C++ terület (esetleg megcsinálhatod C#-ban is nem managelt módban)...
Bizonyos részeit egyszerűen meg lehet csinálni, pl futó processzek listája. De ezt is csak lekérdezgetni tudod bizonyos időközönként.
Találtam egy kis segítséget:
http://www.codeproject.com/KB/threads/MDumpAll.aspxAE
-
Bumbi0
csendes tag
Programot kell írnom, ami folyamatosan figyeli egy alkalmazás processeit és egy stringet keres az egész memórai területén, amit ezek a processek küldenek a memóráiba. Ha megvan a string, akkor meg kell nézni, hogy a memóra melyik címén található és attól a címtől kezdve kiolvasni az egész stringet/sor/üzenetet, mert ez a keresett string az elfogni kívánt üzenetek kezdő szava.
És ezt mindannyiszor meg kell csinálni loopolva, ahányszor a program vagy proccessek hozzá akarnak férni a memóriához.De az a baj, hogy lövésem sincs hogy kezdjek neki.
Előre is köszönöm a segítséget!
-
Bumbi0
csendes tag
válasz
ArchElf #1153 üzenetére
Meg viszont, újabb gondom van, amit sehogy nem tudok megoldani és a Google sem segített és más fórumok sem.
Egy textboxhoz szeretnék adatot küldeni, de a WM_SETTEXT nem felüírja azt, hanem hozzáfűzi és a WM_CLEAR nem hajlandó kitörölni a tartalmát.A másik, hogy SendMessage-el és Post Message-el is próbáltam egér kattintást küldeni egy window-n lévő gombra, viszont nem kattint rá. Paintbe megnéztem és ott viszont minden gond nélkül kattint. Sajnos a gombnak nem elérhető a handle-je Spy++-al így arra nem tudok hivatkozni csak a formon lévő koordinátára. A SetCursor és Mouse_event párosítás nem jó, mert gyakran elő fordul. hogy a gomb takarásban van más program által, ezért a formra hivatkozok jelenleg.
Előre is köszi a segítséget!
Egyébként valóban többet kellett volna a Google-ben keresnem
-
ArchElf
addikt
válasz
acélkemény #1152 üzenetére
Ez tényleg acélkemény volt, tuskó
Sorry Bumbi, hogy nem tudtam foglalkozni vele. De látom szerencsére megoldódott.
AE
-
acélkemény
csendes tag
-
Bumbi0
csendes tag
Hogyan tudom megvalósítani, hogy ha az egeret egy külső program/window fölé viszem, akkor annak a programnak megtudjam a tulajdonságait? Jelen esetben a méreteire lennék kíváncsi, mint a magasság és szélesség.
Igazából egy programon belül szeretnék egy gombra vagy checkboxra egér kattintást küldeni.
Melyik a jobb megoldás, ha minden alkalommal nézem az ablak méretét és abból számolom a gomb helyét pixelben és oda kattintok, vagy az ablakon belül lehet kifejezetten a gombra hivatkozni pl handle-vel?Előre is köszönöm!
-
Bumbi0
csendes tag
Köszi, igaz erre magamtól is rájöhettem volna.
Azt szeretném még kérdezni, hogy az új módszerrel meg lehet oldani, hogy ha rákattintok bármelyik textBox-ra akkor törölje a Hotkey-t.
Eddig így csináltam, de most már ugye ez nem működik:private void textBoxLow_MouseDown(object sender, MouseEventArgs e)
{
if (low != null)
{
low.Dispose();
textBoxLow.Text = "";
textBoxLow.BackColor = SystemColors.Window;
}}
És még valami. Azt hogy kell megoldani, hogy az egér billentyűit is be lehessen állítani Hotkeynek?
Előre is köszönöm a segítséget!
-
Bumbi0
csendes tag
Hozzá akartam addni a HotkeyManager.cs fájlt a projekthez, de amikor futtatni akarom, akkor egy ilyen hibaüzenetet kapok:
Error 1 The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) D:\.projects\TS\TS\HotKeyManager.cs 4 14 TS
Ez mitől lehet?
-
Bumbi0
csendes tag
Ez így miért nem akar működni? Lefordul, csak nem csinál semmit:
private void textBox_MouseDown(object sender, MouseEventArgs e)
{
TextBox textBox1 = sender as TextBox;
textBox1.Text = "";
textBox1.BackColor = SystemColors.Window;
}Viszont, ha mindegyikre egyesével hivatkozom, akkor működik.
pl.:private void textBoxLow_MouseDown(object sender, MouseEventArgs e)
{
if (low != null)
{
low.Dispose();
}
textBoxLowt.Text = "";
textBoxLow.BackColor = SystemColors.Window; -
Bumbi0
csendes tag
Nagyon jó lett az új verzió látom, hogy mit csináltál de nem értem
!
El tudod egy kicsit magyarázni. Látom hogy sokkal rövidebb lett, de nem értem hogyan.
Egyébként ennél a verziónál nem lehet gond, ha egy textboxot nem hotkey regisztrálásra akarok hasznáni, hanem szöveg mezőnek? -
x007
tag
Sokkal karbantarthatóbb így a kód. Sok textbox-ra már általános megoldást csinálnék (most nem raktam bele többet):
-
Bumbi0
csendes tag
Köszönöm szépen valóban hasonló mint amilyet én szeretnék.
Azt meg tudod mondani, hogy ezzel mi lehet a baja?private GlobalHotKey ghk;
...
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
ghk = new GlobalHotKey((Win32.KeyCodes)Char.ToUpper(textBoxBet.Text[0]), false, false, false, false);
ghk.Hotkey += new VoidEventHandler(Hotkey);}
Ezt a hiba üzenetet kapom futás időben: [link]
-
x007
tag
Én elég hamar működésre bírtam...
-
Bumbi0
csendes tag
Egy programot kell írnom ami futás időben 2 darab textboxban 2 darab külön Hotkeyt regisztrál. A hotkeyek a textboxban megadott billentyűre legyenek beregisztrálva. Ha megváltozik a textboxban lévő karakter akkor a hotkeynek ugyan úgy változnia kell, és a hozzájuk tartozó programrészletet ugyan úgy le kell tudniuk futtatni.
Innen vettem a Globális Hotkeyek működését, de 3 hetes kutatás után sem tudtam megcsinálni, hogy a gyorbillenytűk futás időben legyenek beregisztrálva.http://www.softwareonline.hu/Article/View.aspx?id=2279
Az oldalon található sample program:
http://data.hu/get/2056979/HotKey_lynuo.zip.htmlElőre is köszönöm szépen a segítséget!
-
x007
tag
válasz
Briganti #1134 üzenetére
http://www.speedyshare.com/files/20176158/DatasetTutorial.avi
Sztem érdemes csinálni egy Loading... ablakot (ami a program indulásakot jelenik meg) és abban feltölteni adapterekkel a táblákat. Használd a BackgroundWorker vezérlőt
.
-
Briganti
tag
gondolkoztam es eszembe jutott egy kicsit maskepp a kerdes
ha van nehany allando tablam amelyeket tobbszor akarom hasznalni, akkor azokat hol hozzam letre es hol toltsem fel? A fo form Load esemenyenel, vagy van erre egy jobb hely es esemeny?
-
Briganti
tag
lehet hulyeseget kerdezek, de megprobalom
van egy dataGrid -em, es egy combobox amit adatbazisbol kellene feltoltsek es hozzaadtam 2db dataTable-t a dataSet-emhez, es az megoldhatoe valamilyen uton modon hogy ezeket a tablakat lathassam Design modba is, tehat hogy a propertis ablakbol tudjam beallitani a datasource -ot?
Igy toltom fel a dataset -et:
private void frmMain_Load(object sender, EventArgs e)
{
frmFirmaAdd.GlobalMdiParent = this;
frmFirma.GlobalMdiParent = this;
conn = new OleDbConnection(strconn);
OleDbCommand cFirme = new OleDbCommand(qFirme, conn);
OleDbCommand cJudete = new OleDbCommand(qJudete, conn);
DataTable tdFirme = new DataTable("Firme");
DataTable tdJudete = new DataTable("Judete");
OleDbDataAdapter daFirme = new OleDbDataAdapter();
OleDbDataAdapter daJudete = new OleDbDataAdapter();
daFirme.SelectCommand = cFirme;
daJudete.SelectCommand = cJudete;
daFirme.Fill(tdFirme);
daJudete.Fill(tdJudete);
dsFirmAdmin.Instance.Tables.Add(tdFirme);
dsFirmAdmin.Instance.Tables.Add(tdJudete);
}nembiztos hogy ez a megfelelo modszer, ugyhogy barmilyen mas jobb megoldast szivesen fogadok
-
Briganti
tag
nagyjabol sikerult kibogozni hogy ki kivel van, de bele kot a Cache szocskaba, es aztmondja hogy:
The type or namespace name 'Cache' could not be found (are you missing a using directive or an assembly reference?)
2008-s Visual Studiot hasznalok, vajon verzio problemak miatt nem ismeri a Cache tipust?
-
x007
tag
válasz
Briganti #1126 üzenetére
Én nem raknám Formba a DataSet-et. Sztem úgy jársz a legjobban, hogyha generálsz az adatbázisból egy strongly typed datasetet és annak kód részébe csinálsz egy statikus tulajdonságot, amivel globálisan el lehet annak egy példányát érni. Így:
public partial class MyDataSet
{
private static MyDataSet _instance;
public static Cache Instance
{
get
{
if (_instance == null)
{
_instance = new MyDataSet();
}
return _instance;
}
}
}Így a programodban bárhon tudsz majd az adatokra hivatkozni, értelemszerűen így:
MyDataSet.Instance
-
x007
tag
válasz
acélkemény #1127 üzenetére
http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindexchanged.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.selectedvaluechanged.aspx
Én azt gondoltam volna, hogy az alábbi esetben, ha cserélgeted a kiválaszott elemet, akkor a ValueChanged nem váltódik ki, mert a SelectedValue referencia nem változik. De kipróbáltam, tévedtem.
class ListItem
{
public string Value { get; set; }
public override string ToString()
{
return this.Value;
}
}
public Form1()
{
InitializeComponent();
ListItem item = new ListItem() { Value = "Hello World!" };
listBox1.Items.Add(item);
listBox1.Items.Add(item);
listBox1.Items.Add(item);
listBox1.Items.Add(item);
}Szerintem nincs köztük semmi különbség.
-
acélkemény
csendes tag
Mi a kulonbseg a ListBox SelectedIndexChanged es SelectedValueChanged eseménye kozott?
-
Briganti
tag
Ha van egy "komolyabb" alkalmazasom, pl egy keszletnyilvantarto program ahol ugye igenybe kell venni az adatbazist, akkor ott hogy helyesebb, hogy egy fo form-ra helyezzuk el az osszes dataset-et, tableAdaptert meg az ilyeneket es azokat hasznaljuk, vagy minden formra kulon ahol eppen szukseg van ra?
Az en peldamban (ami most eppen nem egy komoly alkalmazas
) van egy MDI Form, es gondoltam hogy az ilyen objektumokat ott hozom letre, hogy minden legyen egyhelyen es igy jobban attudom latni oket, de nemtudom hogy ez a teljesitmeny rovasara fog-e menni.
-
x007
tag
válasz
acélkemény #1123 üzenetére
Amikor elhelyezed a UserControl példányt a formon, akkor tudod azt méretezni is. Az más kérdés, hogy a UserControl-ra helyezett vezérlőket lehet úgy konfigurálni, hogy érzékenyek legyenek a UserControl méretváltozására.
Az tabokat reprezentáló UserControl-okat én egymásra raktam úgy, hogy a Left, Top, Width, Height értékek megegyezzenek. Azt, hogy éppen melyik jelenjen meg, a Visible fogja meghatározni.
-
acélkemény
csendes tag
Ezeket is jo tudni, de momentan arra gondoltam, hogy honnan tudja a Control, hogy oneki mekkora "szurkeseget" (azaz az a hatter, amin a gyerek-controljai vannak) kell hasznalnia? Ez az a "hatter", ami pont akkora meretu, hogy be lehet illeszteni oket egyma hegyere hatara, nem?
-
x007
tag
válasz
acélkemény #1121 üzenetére
Nem tudom mire gondolsz
.
A színes sávot dokkoltam a tetejére, így követi a UserControl méretét.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspxA GroupBox-nak pedig az Anchor tulajdonságát állítottam, hogy kövesse a UserControl méretét.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.anchor.aspx -
acélkemény
csendes tag
-
x007
tag
válasz
acélkemény #1119 üzenetére
-
x007
tag
válasz
acélkemény #1117 üzenetére
Első, egyszerű ötlet:
GroupBox helyett UserControl-t használj. Igaz, így több fájl fogja leírni az ablakod, de legalább normálisan tudod szerkeszteni. -
acélkemény
csendes tag
Hogyan lehet normalis Options formot tervezni? Jelenleg egy Total Commanderehez hasonlo Options ablakot tervezek. Na most, mukodik szepen, csak marhara nehez design time-ban tervezni. Elmondom hogy csinaltam:
Options form, rajta bal oldalt list box, alul a ket gomb (OK Cancel), jobb oldalon meg felrakom a listboxban kivalasztott elemeknek megfelelo group boxokat. Listbox SelectedIndexChanged-jere az tortenik, hogy:
private void OptionsListBox_SelectedIndexChanged(object sender, EventArgs e)
{
switch (OptionsListBox.SelectedIndex)
{
case 0:
HideGroupBoxes();
ViewGroupBox.Visible = true;
break;
case 1:
HideGroupBoxes();
DictionariesGroupBox.Visible = true;
break;
}
}
private void HideGroupBoxes()
{
ViewGroupBox.Visible = false;
DictionariesGroupBox.Visible = false;
}Ez tok szep es jo, csak design time-ban marhara atlathatatlan, mivel Send to Front / Back-kel tudom csak elerni az eppen szerkesztendo GroupBox-ot. Csinalt mar vki ilyet, vagy hogy erdemes neki allni? Most csinalok ilyet eloszor...
-
x007
tag
Talán a legegyszerűbb, hogyha XML fájlban tárolnád a Credentials adatokat, olvasáshoz/íráshoz a LinQ to XML-t ajánlom. Innen indulva mindent megtudhatsz:
http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx
Jelszavakat hashelve tároljad. Ahhoz, hogy ne tudjon beletúrni mindenki, szerintem fájl hozzáférési jogokkal szabályozz.
-
Briganti
tag
Hellosztok, valami adatbazisos feladatot kell keszitsek, es most jovok ra hogy mennyire nem ertek a C# -hoz. Elozetes programozoi ismereteim vannak bar azok sem magas szintuek
Addig kerem segitsegeteket amig kicsit megbaratkozom a kornyezettel
Az objektum orientalt gondolkozasomon is van mit javitani, de majd csak kialakul ...
Elso problemam ugy nezne ki hogy, hogy kezdesbol csinaltam egy MDI (Multiple Document Interface) alkalmazast, egyelore van 2 formom, amiket kellene egy nyitogassak es zarogassak, persze ugy hogy egyik formbol egyszerre csak 1 futhasson, a frmMain (MDIParent Form) -on van egy MenuStripem ahonnan megnyithatom mind a 2 form-ot, es itt mukodik is hogy egyszerre csak 1 fut, es ha megegyszer inditsuk akkor a mar futo form megkapja a Focus -t. Ezt ugy oldottam meg hogy egy Utils.cs osztalyba letrehoztam 2 listat, egyik Form, masik string tipusu, es ide vannak eltarolva a megnyitott formok, es itt ellenorzom hogy megvane nyitva, meg ilyenek. A baj akkor van hogy menu-bol megnyitom az egyik formot, es azon van egy gomb amelyikkel megnyithatom a masik formot. Itt nemtudom hogy mit csinaljak, mert a frmMain -n letrehozott Utils objektumot sehogysem tudtam elerni, es nemtudom hogyha egy ujat hozok letre akkor sztem nem fogok tudni az elozoleg letrehozott form listaval dolgozni.
Nem masolom be az osszes kodot, csak reszleteket, remelem jol valasztok:
Form: frmMain
namespace FirmAdmin
{
public partial class frmMain : Form
{
private int childFormNumber = 0;
public Utils u = new Utils();...
// igy inditok el menubol egy formot, es itt jol mukodik
private void firmeToolStripMenuItem_Click(object sender, EventArgs e)
{
Form childFirma = new frmFirma();
childFirma.MdiParent = this;
childFirma.Text = "Lista Firme";
u.formMegnyit(childFirma);
}Az Utils osztalyom:
namespace FirmAdmin
{
public class Utils
{
protected List<Form> formok = new List<Form>();
protected List<string> formok_s = new List<string>();
public void formMegnyit(Form f) {
string s = f.Text;
if (formok_s.IndexOf(s) == -1)
{
formok.Add(f);
formok_s.Add(s);
f.Show();
}
else
{
int index = formok_s.IndexOf(s);
formok[index].Focus();
}
}
public void formBezar(Form f)
{
formok.Remove(f);
}
}
}Form: frmFirma
private void button1_Click(object sender, EventArgs e)
{
Form addForm = new frmFirmaAdd();
addForm.MdiParent = _mdiForm;
[B]//ez a sor helyett kellene egy olyasmi hogy: frmMain.u.formMegnyit(addForm);[/B]
addForm.Show();
}lehet a kodolasom kicsit ossevissza van, az epito kritikat szivesen fogadom, es bocs a hosszu bejegyzesert!!
-
SimS
senior tag
Üdv
Írok mostanság egy kis alkalmazást és szeretnék beépíteni felhasználóazonosítást (acc + pw). Nem használ hálózatot és külső adatbázist így valahogy meg kellene oldanom a ,,beégetést". De nem akarom túl szimplán, mert akkor holmi .NET elemzővel 1:1 vissza lehetne fejteni - továbbá természetesen módosíthatóvá kellene tenni a már tárolt pw-ket.
Gondoltam MD5 vagy SHA hash használatra (ez elég jónak tűnik szerintem), de ezt hol tároljam? külön fájllal macera, hogy ha véletlenül nem illetékes belekontárkodik (lavinahatás miatt) oda a belépés
mégis, szükséges legyen, hogy a program ,,ne felejtse el" ezeket
p.s.: hú, de körülményesen fogalmaztam...
SimS
-
Lakers
tag
Sziasztok!
A kérdésem az lenne, hogy az ASP.NET-es kérdések is jöhetnek ide?
-
-
szogyenyi
csendes tag
Kössz, csak az a baj, hogy nem nagyon értem. beillesztem a parancsot, de hibát ír ki. valami olyan kód kellene nekem, amivel tudnék hivatkozni a saját Aboutbox-omra.
-
szogyenyi
csendes tag
Hello. én most kezdtem el a visual c#-vel foglalkozni, lenne egy kis problémám. csináltam egy menüt, és akarok csinálni egy aboutboxot. találtam a neten egy ilyen kódot, hogy
AboutBox1 AboutMe = new AboutBox1();
AboutMe.Show();de az a baj, hogy ez egy új aboutboxot jelenít meg, nekem egy olyan kódra lenne szükségem, ami a saját készítésű aboutboxomat nyitja meg. tudtok segíteni nekem?
-
ArchElf
addikt
válasz
acélkemény #1103 üzenetére
Szerintem ilyet nem nagyon fogsz találni. Ha esetleg találsz egy digitális (vektor) Magyarország térképet, abból esetleg ki tudod nyerni ezeket az infókat (ami szerintem az esetek legnagyobb részében nem legális). Ha fizetős szolgáltatást szeretnél, akkor a Földmérési és Távérzékelési Intézettől biztos tudsz szeretni ilyen infókat.
AE
-
acélkemény
csendes tag
Sziasztok!
Egy uj oldal kitalalasan gondolkozok, ehhez kellene par tipp. Kerdeseim: magyarorszag telepules adatbazis hol elerheto? Amire szuksegem lenne: telepulesnevek, osszekapcsolo utak es hosszusaguk, meg valami algoritmus a koztuk legrovidebb ut meghatazosahoz. Egyelore ennyi kellene... hol keresgeljek esetleg? SQL-ben van tarolva valahol ilyen?
Ú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!
- BestBuy ruhás topik
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Okos Otthon / Smart Home
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Nintendo Switch 2
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- sziku69: Szólánc.
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- Lenovo Legion Pro 5 16IRX9
- Apple iPhone 11 Pro 64GB, Kártyafüggetlen, 1 Év Garanciával
- REFURBISHED és ÚJ - HP Thunderbolt Dock G2 230W docking station (3TR87AA)
- Csere-Beszámítás! Felsőkategóriás számítógép PC Játékra! I9 13900KF / RTX 4080 / 32GB RAM / 1TB SSD
- Okosóra felvásárlás!! Samsung Galaxy Watch 5 Pro, Samsung Galaxy Watch 6 Classic
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged