-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
cigam
titán
-
sztanozs
veterán
Addig eljutottam, hogy nem írom ki újra a szöveget 1 pixellel feljebb, mert ez vmiért ette a procit, az egyik mag 100%-on pörgöt.
Most átalakítom a szöveget bitmap képpé, és ezt a képet pöckölöm pixelenként. A prociterhelés már elfogadható 20% körül mocorog, szóval nem a proci fogja vissza a scroll sebességét, de még mindég nem az igazi.3 dolog jutott eszembe:
- Nem az a baj, hogy a StudioComunity Edition-ban fordítom le, ezért nem natív Win32 app lesz, hanem "csak" egy .NET program?-Ahogy nézem a WPF programok a csilivilire vannak kihegyezve. Ha abban próbálnám lekódolni, megszünne a villogás?
- Nem lehet hogy az a baj, hogy a listbox-ot tologatom? Úgy is lehetne, hogy a listbox marad fixen, és benne a képet tolom felfele? Mintha a listbox egy ablak lenne, amit mögött elhúzom a képet.
Csinálok mindjárt egy próbát a gépemen, nem szabadna villogjon...
C#-ban lesz elsőre (VB.NET már rég nincs a kezemben).
Itten van - semmit nem állítottam a formon és egyáltalán nem villog:
namespace TestControlMove
{
public partial class Form1 : Form
{
bool MozogE = false;
Point Eredeti;
public Form1()
{
InitializeComponent();
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Eredeti = e.Location;
MozogE = true;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (MozogE)
{
pictureBox1.Location = pictureBox1.Location + new Size(e.X - Eredeti.X, e.Y - Eredeti.Y);
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
MozogE = false;
}
}
} -
cigam
titán
Addig eljutottam, hogy nem írom ki újra a szöveget 1 pixellel feljebb, mert ez vmiért ette a procit, az egyik mag 100%-on pörgöt.
Most átalakítom a szöveget bitmap képpé, és ezt a képet pöckölöm pixelenként. A prociterhelés már elfogadható 20% körül mocorog, szóval nem a proci fogja vissza a scroll sebességét, de még mindég nem az igazi.3 dolog jutott eszembe:
- Nem az a baj, hogy a StudioComunity Edition-ban fordítom le, ezért nem natív Win32 app lesz, hanem "csak" egy .NET program?-Ahogy nézem a WPF programok a csilivilire vannak kihegyezve. Ha abban próbálnám lekódolni, megszünne a villogás?
- Nem lehet hogy az a baj, hogy a listbox-ot tologatom? Úgy is lehetne, hogy a listbox marad fixen, és benne a képet tolom felfele? Mintha a listbox egy ablak lenne, amit mögött elhúzom a képet.
Termeszetesen nem listbox, hanem picturebox ...
-
sztanozs
veterán
Köszi az irányítást! Anno ZX81-en írtam azt, hogy 10 goto 20, és azóta hány év telt el...

Most pl. ott akadtam el, hogy villog a "scroll". (A form-on belül egy imagebox-ot tologatok pixelenként, és az időzítéssel szabályozom a scroll sebességét)Próbáltam a doublebuffer-t beszűrni, de vagy rosszul csináltam(ezt is), vagy nem segít.
Gondolom a directx-es abla(időzítés?) segítene a dolgon, de ahogy néztem nincs benne a directx lehetősége, csak c++-on és ott is valami fejlesztői fiókot akar tőlem.Én bénázok, vagy ezzel az ingyenes verzióval tényleg nem lehet directx-es applikációt gyártani?
A form beállításai között van valami rajzolási beállítás - lehet, hogy a doublebuffering.
A lényeg az, hogy ne próbálj plusz rajzolásokat beleerőszakolni a rendszerbe, próbáld meg kihasználni azt, amit a rendszer ad. -
sztanozs
veterán
Már majdnem működik a program, csak a lényeget nem tudja

Pl. a szövegosztályok metódusait (ha jól tippelek így hívják őket), miért nem hagyja békén?
Pl. a szöveg = left(szöveg,4)-re hibát jelez, mert őszerinte a Left () az a baloldali éltől való távolság pixelben. (ha jól értettem azt amire panaszkodik)Próbálj objektumorientáltan gondolkozni - a left/right/mid csak a visszafele kompatibilitás miatt maradt bent.
Amúgy nem az IO zavar be, hanem az ablak Left paramétere.
Használd inkább a String objektum beépített függvényeit:
szoveg = left(szoveg, 4)
helyett
szoveg = szoveg.Substring(0, 4) -
sztanozs
veterán
-
sztanozs
veterán
Amikor a File.ReadAllLines-al feltöltök egy tömböt, akkor hogyan tudom megállapítani, hogy hány elemes lett a tömb? Magyarul hány sort olvasott be.
A manuel azt is írja, hogy automatice felismeri a karakterkódolást, ehhez képest a hosszú ékezetes magánhangzók problémásak.
Egy notepaddal írt szöveget olvasnék be.
pl.:
string[] AllLines = File.ReadAllLines(file);AllLines.Length vagy AllLines.LongLength
Automatice megpróbálja felismerni - amennyiben UTF-8 BOM-mal vagy UTF-32.
Ha UTF-8 BOM nélkül, vagy ASCII valami kódlappal, akkor azt nem ismeri fel.Eredetiből:
This method attempts to automatically detect the encoding of a file based on the presence of byte order marks. Encoding formats UTF-8 and UTF-32 (both big-endian and little-endian) can be detected. -
martonx
veterán
-
martonx
veterán
Mindjárt bele is futottam az első problémába:
Public Class Form1
' A konyvtar változóban tárolom el, hogy melyik könyvtárban fut a program.
Dim konyvtar As String = Application.StartupPath
' Feltölti a fájl listát a .txt fájlokkal
Private Sub Fajllistafeltoltes()
Dim dir As New IO.DirectoryInfo(konyvtar)
For Each fajl As IO.FileInfo In dir.GetFiles
If fajl.Extension = ".txt" Then
ListBox1.Items.Add(fajl)
End If
Next
ListBox1.SetSelected(0, True)
End Sub
' Figyeli a lenyomott gombokat
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Enter
MsgBox("Segítség!!!")
End Select
End Sub
' Indul a program
' - betölti a fájl listát
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Fajllistafeltoltes()
End Sub
End ClassMiért kell belekattintani a listbox-ba, hogy észrevegye az ENTER leütését?
Hú, de elképesztő rég volt, hogy winforms-oztam. Annyi rémlik, hogy az egész ablakod tualjdonságai között kell engedélyezni valami keyakármi tulajdonságot. És akkor már tényleg bárhol figyelni fogja a gomb nyomást, amíg aktív az ablakod.
-
martonx
veterán
-
martonx
veterán
-
Bobrooney
senior tag
-
sztanozs
veterán
-
sztanozs
veterán
Nem, DateTime-ban tárold és a kivonás egy TimeSpan objektumot hoz létre. Ez már magában időtartamot reprezentál. MSDN-ről:
Dim startTime As Date = Now
' Run the process that is to be timed.
Dim runLength As Global.System.TimeSpan = Now.Subtract(startTime)
Dim millisecs As Integer = runLength.Milliseconds -
sztanozs
veterán
-
sztanozs
veterán
De ugye a kódod lefutása is időbe kerül és a timer esemény lekezelése is időbe kerül. A 1000 ms pedig az előző kód lefutása után értendő. Egyszerűbb, ha 100 ms-ként csinálod és elmentett Time (Now) és aktuális Time (Now) közötti különbséget írod mindig ki.
-
sztanozs
veterán
Mivel/hogyan csináltad a stoppert?
-
martonx
veterán
Hogyan tudnám optimalizálni a dolgot, hogy pl. a reset-et ne keljen újra lekódolni?
...
If e.KeyCode = Keys.F3 Then
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
ido.Text = idoszoveg
End if
....
Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
ido.Text = idoszoveg
End SunVagyis milyen parancsal tudom meghívni a "resetgomb_Clik" rutint?
If e.KeyCode = Keys.F3 Then resetgomb_Click()?Erre valóak a metódusok, függvények. A kérdéses kódrészletet kiemeled egy public izé ResetButtons (...) függvénybe, és azt hívod meg a kérdéses helyeken.
-
cigam
titán
Csináltam egy stoppert. Azt szeretném, hogy billentyűzettel is lehessen vezérelni, de nem tudom hogyan. Amit találtam példakódot nem működik:
Public Class Form1
Dim perc As String = "00"
Dim masodperc As String = "00"
Dim idoszoveg As String = "00:00"
Private Sub ido_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ido.KeyDown
If e.KeyCode = Keys.F1 Then Timer1.Start()
End Sub
Private Sub startgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startgomb.Click
Timer1.Start()
End Sub
Private Sub stopgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopgomb.Click
Timer1.Stop()
End Sub
Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
ido.Text = idoszoveg
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
masodperc += 1
If masodperc = "60" Then
masodperc = "0"
perc += 1
If perc < 10 Then perc = "0" & perc
End If
If masodperc < 10 Then masodperc = "0" & masodperc
idoszoveg = perc & ":" & masodperc
If perc = "100" Then
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
End If
ido.Text = idoszoveg
End Sub
End ClassHogyan tudnám optimalizálni a dolgot, hogy pl. a reset-et ne keljen újra lekódolni?
...
If e.KeyCode = Keys.F3 Then
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
ido.Text = idoszoveg
End if
....
Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
ido.Text = idoszoveg
End SunVagyis milyen parancsal tudom meghívni a "resetgomb_Clik" rutint?
If e.KeyCode = Keys.F3 Then resetgomb_Click()? -
martonx
veterán
Nem, ez engem is zavar tegnap óta

Vissza akarom kapni a régi jó BASIC nyelvet "visual" nélkül. Eszméletlen miket csináltunk anno a a 8bites otthoni gépekkell...
martonx
Nem valószínű, hogy továbblépek. Az otthoni apróságok, és kissebb céges, a munkámat megkönnyítő programocskákat faragok a magam szórakoztatására. Ez a stopper sem több mint 20-30 sor, mégis elvarázsol mire (vagyok) képes.
A továbblépés azért is kétséges, mert pénzt nem adok értük, és nem is keresek velük. Szórakozásnak meg pöttyet drágák, és tényleg nem használnám ki. Jelenleg elég távolinak tűnik, hogy az VBexpress korlátaiba ütközzek. Bár kíváncsi vagyok, hogy egy WindowsPhone program, (pl. ez a stopper) mennyivel bonyolultabb."Vissza akarom kapni a régi jó BASIC nyelvet "visual" nélkül. Eszméletlen miket csináltunk anno a a 8bites otthoni gépekkell..."
Hál'istennek azért a világ néha fejlődik is, gyakran csak nagy köröket fut a fejlődés, de azért egy vb.net-et összehasonlítva egy C64-es BASIC-el a fejlődés igen szembeötlő.
"A továbblépés azért is kétséges, mert pénzt nem adok értük, és nem is keresek velük. Szórakozásnak meg pöttyet drágák, és tényleg nem használnám ki."
Oké, nekem tök mindegy miben programozol, ízlések és pofonok. Viszont legalább ne írj butaságot, hogy azért nem akarsz továbblépni, mert drágák, és nem adsz értük pénzt. Mi a drága egy ingyenes wpf-en? És egy ingyenes ASP.NET-en?
Szóval használj nyugodtan winforms, simán elég lehet sok mindenre. De legalább ne beszélj butaságot. -
bepken
veterán
a Form_Load részhez?

1 hete ismerkedem a VB2010expressel, semmi nem evidencia.Viszont most megint átnéztem jobboldalt a properties ablakban a "Form1 System.Windows.Forms.Form" listájában a "KeyDown"-hoz tudtam társítani az "ido_KeyDown" szubrutint, és most működik!
- A form load részt hol találom, és a program "melyik része" ez?
- Ez a "Form1 System.Windows.Forms.Form" micsuda?ja hát én meg ~2 hete, szóval túl sokat én sem tudok segíteni, csak abban, amilyen problémával én is találkoztam eddig

nálam a billentyű figyelés így néz ki:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
KeyPreview = True
....tehát (az én olvasatomban legalábbis), ha az adott form aktív, akkor figyeli a leütött billentyűket
illetve van egy "KeyPress" event is:
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = 13 Then
....ez meg az Enter billentyűt várja (ASCII kód: 13)
egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?
-
martonx
veterán
-
martonx
veterán
na látod megy ez.
Bevallom olyan 2005 környéke óta a windows forms közelébe se mentem, így csak távoli ködös emlékképekből próbálok felidézni pár akkori tipikus hibámat, és azok megoldását. -
cigam
titán
a Form_Load részhez?

1 hete ismerkedem a VB2010expressel, semmi nem evidencia.Viszont most megint átnéztem jobboldalt a properties ablakban a "Form1 System.Windows.Forms.Form" listájában a "KeyDown"-hoz tudtam társítani az "ido_KeyDown" szubrutint, és most működik!
- A form load részt hol találom, és a program "melyik része" ez?
- Ez a "Form1 System.Windows.Forms.Form" micsuda?Közben szintén a properties ablakban megtaláltam a keypreview-et, de már true-ra állítottam

-
martonx
veterán
Csináltam egy stoppert. Azt szeretném, hogy billentyűzettel is lehessen vezérelni, de nem tudom hogyan. Amit találtam példakódot nem működik:
Public Class Form1
Dim perc As String = "00"
Dim masodperc As String = "00"
Dim idoszoveg As String = "00:00"
Private Sub ido_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ido.KeyDown
If e.KeyCode = Keys.F1 Then Timer1.Start()
End Sub
Private Sub startgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startgomb.Click
Timer1.Start()
End Sub
Private Sub stopgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopgomb.Click
Timer1.Stop()
End Sub
Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
ido.Text = idoszoveg
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
masodperc += 1
If masodperc = "60" Then
masodperc = "0"
perc += 1
If perc < 10 Then perc = "0" & perc
End If
If masodperc < 10 Then masodperc = "0" & masodperc
idoszoveg = perc & ":" & masodperc
If perc = "100" Then
perc = "00"
masodperc = "00"
idoszoveg = "00:00"
End If
ido.Text = idoszoveg
End Sub
End ClassMi nem működik benne? A formon beállítottad, hogy figyeljen a billentyű lenyomásokra?
-
Cpt. Flint
tag
-
sztanozs
veterán
Ismerkedem a VBExpress-el, és belefutottam egy kérdésbe: Amikor a lenti kóddal hozzáadok egy új fület, hogyan adok az új fülhöz egy, a fül sorszámával megegyező nevü szövegdobozt?
Dim ujful As New TabPage
ujful.Text = "szöveg " & (TabControl1.TabPages.Count + 1)
TabControl1.TabPages.Add(ujful)
' ide kéne az as varázskód ami a fülhöz hozzáadja a szovegelosorszam nevü RichTextBox-ot
Dim "szovegdoboz" & (TabControl1.TabPages.Count) As New RichTextBox
'Átváltok az új fülre
TabControl1.SelectedTab = (ujful)1) Használd a kód formázást.
2) kb fejből, szal lehet benne hiba vagy elírásfor ix = 1 to fulek_szama
Dim ujful As TabPage
Set ujful = New TabPage
ujful.Text = "szöveg " & (TabControl1.TabPages.Count + 1)
' ide kéne az as varázskód ami a fülhöz hozzáadja a szovegelosorszam nevü RichTextBox-ot
Dim szovegdoboz As RichTextBox
Set szovegdoboz = new RichTextBox
szovegdoboz.Name = "szovegelosorszam" & (TabControl1.TabPages.Count + 1)
ujful.Controls.Add szovegdoboz
TabControl1.TabPages.Add(ujful)
next
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fujifilm X
- Futás, futópályák
- exHWSW - Értünk mindenhez IS
- Linux kezdőknek
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Revolut
- EAFC 26
- Május 26-án érkezik a World of Tanks: HEAT PC-re és konzolokra
- Blogjában leplezte le a 12V-2x6 tápkonnektor hibáját a Corsair
- Kerékpárosok, bringások ide!
- További aktív témák...
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




Bevallom olyan 2005 környéke óta a windows forms közelébe se mentem, így csak távoli ködös emlékképekből próbálok felidézni pár akkori tipikus hibámat, és azok megoldását.
