- sziku69: Szólánc.
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- zebra_hun: Hűthető e kulturáltan a Raptor Lake léghűtővel a kánikulában?
- gban: Ingyen kellene, de tegnapra
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Új hozzászólás Aktív témák
-
petyus_
senior tag
localban csinálj egy clean-t (legjobb git clean -fxd-vel, ez törli az összes file-t, ami nincs benne a repoban), és próbáld meg ugyanazt a parancsot futtatni, mint a workflowban. VS-ben buildelsz az nem teljesen ugyanaz, mintha dotnet build-et csinálnál, így könnyebb debuggolni, hogy mi lehet a gond.
-
Miért nem talál (a GitHub fordító) pár NuGet-el feltett csomagot, pl. a DocumentForamat.OpenXML-t.
https://justpaste.it/f89be
Ezt hogyan tudom vele megetetni? -
Postas99
senior tag
Szia!
Az nem lehet hogy [Ez alapján] a number egy outer érték ami csak azt adja meg hogy a cella számként van-e ábrázolva.
cellName.DataType = CellValues.Number;
-
Szokták volt mondani, az olvasottság nagy fontos:
Retrieve the values of cells in a spreadsheet document
The Cell type provides a DataType property that indicates the type of the data within the cell. The value of the DataType property is null for numeric and date types.Ugyanakkor felveti annak a kérdését, hogy akkor mire való az
if (theCell.DataType.Value == CellValues.Number) ?! -
Console.WriteLine(theCell.InnerText);
Console.WriteLine(theCell.DataType.Value);
Ha a cellába "0" van beírva:
0
DocumentFormat.OpenXml.Spreadsheet.CellType.DataType.**get** returned null.
Az álmoskönyvek szerint Ilyenkor "Number"-t kellene kiírniaHa "0a" a cella értéke, akkor fura dolog történik:
12
SharedStringSajnos ilyenkor az int.Tryparse is 12-t ad vissza, hiszen 12-t kapja bemenetnek.
Végül ez a null adott egy ötletet:
if (theCell.DataType == null)
most így működik az ellenőrzés, ha nincs Datatype megadva, akkor szám van a cellában.Tegye fel a kezét, aki érti, vagy meg tudja magyarázni, miért ilyen az online Excellel módosított fájl a helyi onedrive mappából megnyitva.
-
sztanozs
veterán
-
-
Offline remekül működik, de abban a pillanatban, hogy egy MS365 ingyenes online fiókban módosítják a web-es felületen, elveszti a típusát. A theCell.DataType.Value null értéket ad vissza.
Pedig próbáltam a WEBes felületen is beállítani a cellák formázását, de tojik rá.
Mégiscsak int.TryParse lesz belőle -
Ez lett a vége:
// Éjjeli maximum
addressName = "C4";
theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
// is Empty?
if (theCell.DataType != null)
{
// is Number?
if (theCell.DataType.Value == CellValues.Number)
{
data = theCell.InnerText;
if (data != "")
{
nightMaximum = int.Parse(data);
label_nightMaximum_ertek.Content = nightMaximum;
}
else
{
label_nightMaximum_ertek.Content = "-";
error = true;
}
}
else
{
label_nightMaximum_ertek.Foreground = Brushes.Red;
label_nightMaximum_ertek.Content = "?";
error = true;
}
}
else
{
label_nightMaximum_ertek.Content = "-";
error = true;
}
Ez a sok if minden egyes cellánál, azt üvölti, hogy lehetne ez jobban is. De hogyan?Hogyan tudnám az ellenőrzést kiszervezni úgy, hogy van amelyik cella szám, van amelyik szöveg, és attól függően hogy mi a problémám vele, más más szöveget kell megjeleníteni, van aminek még a színét is módosítom.
Egyáltalán ezt a "theCell"-t át tudom adni szubrutinnak (metódus?)? -
-
pmonitor
aktív tag
50 felett már többet felejtek mint amennyit tanulok
Ez igaz. Én meg már 40 előtt is ezt tettem a betegségeim miatt. Azóta én már halott vagyok. Már csak vérkeringésem van. Azért arra büszke vagyok, hogy addig sztem. egész jól haladtam. Ráadásul azt figyelembe véve, hogy sehol nem tanultam programozást.
-
martonx
veterán
Microsoft Graph-al valahogy így kellene nekiállni:
1. Get started using OneDrive API - OneDrive dev center | Microsoft Learn
2. Download a file - OneDrive API - OneDrive dev center | Microsoft Learn -
-
-
sztanozs
veterán
Igazából mehet a maradék is a try-ba, hiszen csak olyan dolog van benne, ami a try-ban csak akkor hajtódik végre, ha nem volt hiba.
Arra kell figyelni, hogy ilyenkor más hiba is elkapható (pl DataVisualization függvényben történő bármilyen hiba - ha az ott nincs elkapva és feldolgozva). -
sztanozs
veterán
Típus érték;
try {
érték = ami_hibát_dobhat()
}
catch (Exception_1 e)
{
// bármi amit a hiba esetén csináli akarsz
// pl logolni, vagy hibaüzenet kiírni vagy logolni
// az érték változó/objektum itt null lesz}
catch (Exception_2 e)
{
// bármi amit a hiba esetén csináli akarsz
// pl logolni, vagy hibaüzenet kiírni vagy logolni
// az érték változó/objektum itt null lesz
}
finally
{
// amit mindettől függetlenül szeretnél csinálni
// de a figyelt kódhoz tartozik
// pl kiiratás vagy logolás, de akár az érték/objektum elengedése is, ha nem null
} -
-
vlevi
nagyúr
"kiderül, hogy nem is olyan kicsi feladat. "
Inkább az, hogy olyan nagyok már ezek a fejlesztőkörnyezetek, annyira összetettek, hogy ismerni kell a keretrendszert. Legalább azt a részét, amit használni akarsz. Mert pl. hiába dolgozik valaki tizenvalahány éve C#-al, ha nem használt WPF-et, akkor neki is kínai az XAML. Talán annyi előnye van csak veled szemben, hogy jobban rááll a szeme a C# nyelvre, és ezért könnyebben megérti a megoldást."Teljesen jó ez is, "
Csak ne felejtsd el valahol inicializáláskor 1-re állítani aScaleX
-et, mert különben a0= -0
nem sokat csinál -
Ez történik, ha csak bemásolod, de lövésed nincs róla. Egyszerűen csak működik. Még1x nagyon köszönöm a segítséget!
Az if then else szerkezetemet leegyszerűsítette: ScaleX = ScaleX == 1 ? -1 : 1;
Nem is tudtam hogy az értékadás ilyen egyszerűen bonyolult is lehet. Minden nap tanulok valami újat. -
Alexios
veterán
A scaletransformot be kell állítani valamihez, mert ez valaminek a transzformációja. A sima zárójel amúgy ha használsz mögötte {} zárójeleket is nem feltétlenül muszáj.
Szóval vagy van valamid amit szeretnél méretezni a xaml-ben, ott adsz egy nevet neki x : Name-el, majd a code behindban arra hivatkozol, vagy azt amit méretezni is akarsz code behindban hozod létre, és a végén hozzáadod a mainwindowhoz.Viszont, igazából mindegyik megoldás idegen a WPF-től, még ha működne is. Kezdésnek tudom, hogy viszonylag sok tud lenni, de tényleg érdemes olvasni az MVVM patternről, és data bindingról, mert egyrészt sokkal egyszerűbb dolgod lesz, másrészt erre van kitalálva. A lényege, hogy xaml-ben létrehozod a ui elementedet amit akarsz, majd ezt hozzá kötöd egy propertyhez, ezt általában egy viewmodel osztályban szokták, esetedben ha kezdésként a xaml.cs fájlban van sem gáz. A lényeg, hogy az az osztály, amihez kötni akarod meg kell valósítsa az INotifyPropertyChanged interfészt, ez az egész WPF sava-borsa, majd ha változás van akkor ezzel jelezni.
Valami ilyesminek kéne lennie pl.:
public partial class MainWindow : Window, INotifyPropertyChanged
{
//Inotifypropertychanged interfész megvalósítása
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
//Property amihez tudsz kötni xaml-ről
private double scaleX;
public double ScaleX
{
get => scaleX;
set
{
scaleX = value;
//Ez az egész lényege, emiatt fog értesülni a UI arról hogy változás történt
OnPropertyChanged();
}
}
public MainWindow(){
InitializeComponent();
//Esetünkben nincs viewmodel, szóval ez az osztály lesz az ahol keresni fogja a propertyket
DataContext = this;//Kezdésnek legyen 1, bárhol változtathatod aztán a kódban, pl. timerrel
ScaleX = 1;
}
}
Aztán xaml-ben így lehet kötni hozzá:
<!--Ui Element amit méretezni akarsz, itt egy grid, de amúgy kb bármi lehet-->
<Grid>
<Grid.RenderTransform>
<!--Kötés a ScaleX propertyhez, amit a code-behindban állítunk-->
<ScaleTransform ScaleX="{Binding ScaleX}"/>
</Grid.RenderTransform>
</Grid>A lényeg, hogy ezután, ha lesz egy timered, akkor csak simán a ScaleX propertyt kell állítanod, és semmi más varázslatra nincs szükség.
-
Alexios
veterán
Ha az eredeti példádban levő kódot akarod c#-ban:
var st = new ScaleTransform
{
ScaleX = 1,
ScaleY = 1
};
//Ha egy negyzetbe szeretned belerakni:
var transformGroup = new TransformGroup();
transformGroup.Children.Add(st);
var rt = new Rectangle();
rt.RenderTransform = transformGroup;
De azért mutatják be XAML-ben szerintem, mert a wpf fejlesztők 90% úgy fogja használni, nem feltétlenül code behindban fognak ui részt írni, neked miért fontos hogy így legyen?
-
coco2
őstag
@cigam, @fatal: A második ugyan méretesebb, de az akkor is csak update. Ha azt indítom el, szól, hogy nem talál telepített vs2015 példányt. Ha előzőleg telepítem, akkor az is lefut hiba nélkül. De indító exe-t az sem ad.
@vlevi: Az az installer már csak 2019-et szed le. Nem legacy verziós vs kellene, nem is lenne problémám. De azt a tippet köszönöm, hogy talán online installert is kipróbálhatok 2015-re. Nézem..
@joysefke: Azt ugye sejted, hogy épelméjű fejlesztő nem jár azoknak - és nem is fognak kapni - akiknek csak arra kell, hogy fingassák? Ha fingásra vágytok, arra ott a babfőzelék, bon appétit
-
Keem1
veterán
public partial class MainWindow : Window
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
public MainWindow()
{
InitializeComponent();
// A program indulásakor beolvassa a táblázatot
Read();
// 10 percenként újra beolvassa
dispatcherTimer.Tick += new EventHandler(Reload);
dispatcherTimer.Interval = new TimeSpan(0, 10, 0);
dispatcherTimer.Start();
} -
joysefke
veterán
Hali!
nem teljesen értem, mit szeretnél csinálni, vagy a kód amit beszúrtál mit csinál, de a következő észrevételeim lennének:
1,
if (holnap+1=1)
ide szerintem == operátor kéne, nem értékadás. Egyáltalán miért nem kapsz itt hibát, hiszen az értékadás bal oldalán nem változó áll2,
Az if( ) feltételeid egymást mind kölcsönösen kizárják, tehát nem fordulhat elő, hogy egyszerre kettő if-törzsbe belépsz.Sokkal átláthatóbb lenne a kód, ha
if(A) {..}
else if (B) {...}
else if (C) {...}
else {}konstrukciókat használnál.
Sőt, ilyen helyzetben én inkább egyből switch statementet használnék, ami a
holnap
változódtól függően csinálna valamit (adna értéket a listaelemeidnek )3,
Ha ki akarod kerülni ezt a "hét napja" enum-aritmetikát /ami vonzza a hibákat mint a mágnes/, akkor az első dolog ami nekem eszembe jut (persze nyilván vannak más, akár jobb megoldások is) készíteni statikus extension methodokat, amelyek kényelmessé teszik az életedet:
Pld:
public static class DayHelper
{
public static int DaysToMonday()
{
var today = DateTime.Today.DayOfWeek;
var offset = DayOfWeek.Monday - today;
return offset >= 0 ? offset : 7 + offset;
}
public static int DaysToSunday()
{
var today = DateTime.Today.DayOfWeek;
var offset = DayOfWeek.Sunday - today;
return offset >= 0 ? offset : 7 + offset;
}
public static int DaysToMonday(this DateTime date)
{
var day = date.DayOfWeek;
var offset = DayOfWeek.Monday - day;
return offset >= 0 ? offset : 7 + offset;
}
Stb stb stb
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DayHelper.DaysToMonday());
Console.WriteLine(DayHelper.DaysToSunday());
Console.WriteLine(new DateTime(2019, 4, 20).DaysToMonday());
Console.WriteLine("Hello World!");
}
}Innentől kezdve, ha hívsz a kódodban egy ilyet hogy:
DayHelper.DaysToMonday()
akkor visszaadja a hétfőig hátralevő napok számát. Ezt nyilván meg tudod csinálni a hét összes napjára.Ha pedig van egy DateTime típusú változód, akkor azon meghívva a DaysToMonday()-t visszaadja az adott dátumtól a hétfőig visszalevő napok számát. Pld:
Console.WriteLine(new DateTime(2019, 4, 20).DaysToMonday());
Visszaadja hogy 20-i dátumtól kezdve mennyit kell aludni hétfőig.
-
vlevi
nagyúr
Ez így biztosan nem jó. Ha az utolsó if, vagyis a holnap+3=1 nem teljesül, mindenképp üres lesz a két elem.
Vagy az egészet egymasba ágyazott if else szerkezetekbe rakod, vagy a switchcase ilyen esetben jobb.
Vagy előre feltöltést egy constans tömböt az eredményekkel, és csak abból választasz.
Arra is vigyázz, hogy a dayofweek angol területén vasarnap az 1, Magyarországon a hétfő. Itt is érdemes használni a culture paramétert. -
A beolvasást áttettem a GetCellValues-ba:
public void GetCellValues(string fileName, string sheetName)
{
...
// Éjjel
addressName = "B4";
Cell theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
// If the cell does not exist, return an empty string.
if (theCell != null)
{
adat = theCell.InnerText;
if (adat != "") ejszaka_min = int.Parse(adat);
else
{
MessageBox.Show("Az éjszakai minimum hőmérséklet nincs kitöltve");
hiba = true;
return;
}
}
addressName = "C4";
theCell = wsPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == addressName).FirstOrDefault();
...
}Így már jó(bb)?
-
dqdb
nagyúr
Az Excel fájlban a B1 mezőben van a dátum, nem a B2-ben, ahogyan a forrásban szerepel.
Két megjegyzés:
1. oké, hogy az elvi lehetőség adott a közel teljes UTF8 használatára a forráskódban a szimbólumok nevéhez, azonban nem túl szerencsés ékezetes függvény- és változóneveket használni (és úgy általában nem angolt sem)
2. a GetCellValue metódust át kellene dolgozni, mert jelenleg minden érték kiolvasásánál megnyitod az Excel fájlt, megkeresed a munkalapot, ott mezőt, kiolvasod, majd lezársz mindent -
dqdb
nagyúr
Ha az Excelben adott mező formátuma dátum, akkor a
GetCellValue
függvényből egész számot kapsz vissza szövegként, ha idő, akkor egynél kisebb törtet, ha dátum és idő, akkor törtet. Ha van törtrész, akkor a szövegben tizedespont szerepel, amire aDouble.Parse(value)
akkor fog lefutni, ha olyan regionális beállításod van, ami tizedespontot használ, vagy második paraméterként átadsz egy ilyen locale-t. Az előző hozzászólásomban szereplőCultureInfio.InvariantCulture
ilyen, írd be, és működni fog.43566.556944444441 => 2019.04.11. 13:22:00
43567 => 2019.04.12. 0:00:00 -
Elakadtam a dátumnál. A példa alapján, ha dátum van a cellában akkor
// Retrieve the date value in cell A2.
value = GetCellValue(fileName, "Sheet1", "A2");
Console.WriteLine(
DateTime.FromOADate(double.Parse(value)).ToShortDateString());Viszont nálam ez system.formatexception hibára fut.
+ Mit jelent az, hogy For dates, this code returns the serialized value that represents the date. ?
Valami trükk van a dologban, mert ha csak simán kiíratom a szöveget(Console.WriteLine(value);
), akkor semmi nem jelenik meg. -
dqdb
nagyúr
Az Office interop arról szól, hogy egy futó/akkor elindított Excel alkalmazást vezérelsz távolról a COM interfészén keresztül, hogy hajtson végre ilyen-olyan műveleteket, így mindenképpen telepített kliens kell neki mind fejlesztés közben, mind máshová feltelepítve.
Ha Excel telepítés nélkül szeretnél .xlsx fájlokat kezelni, akkor nézz rá az EPPlus és Open XML SDK projektekre.
-
-
Alexios
veterán
Megnéztem a xaml-t a desktop verzióban ha azt próbáltad, ennyi van benne:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
</Grid>Szóval mint látod ez egy üres grid, ezért látsz egy üres fekete képernyőt.
A windows phone változat alatt pedig az a baja hogy nem mainpage.xaml a fájl neve hanem basicpage1, így azt nem is találja(nem is tudom lefordul-e egyáltalán így)Universal app-nál(amennyire én tudom, csak fél szemmel nézegettem utána eddig) mind a két alkalmazásnak ugyanannak a fájlnévnek(vagyis osztálynak de most ez mindegy) kell lennie a két projektben, ha megnézed a shard projectben az app.xaml.cs-ben látod hogy:
rootFrame.Navigate(typeof(MainPage)
Azaz MainPage típusú oldalra navigál, ha meg ez nincs a wp projekt-nél, csak basicpage típus akkor nem tud oda navigálni.Szóval vagy töröld ki a BasicPage1.xaml-t és illeszd be MainPage.xaml néven, ekkor automatikusan MainPage nevű osztályokat fog létrehozni, vagy a xaml fájl tetején x:Class="App1.MainPage" legyen illetve a xaml.cs-ben is írd át az osztály nevét meg a konstruktor nevét.
-
martonx
veterán
Jópofa dolog ez az universalApp, csak a hülye MS annyiszor nyírta ki, változtatta meg drasztikusan az utóbbi években az eddigi fő platform fejlesztési irányát, hogy szvsz kb. egyedül vagy azzal, hogy universalApp-ot fejlesztesz. Nem akarok a többiek nevében beszélni, de igyekszek annyira távol maradni a Microsoft újabb platformjaitól, amennyire csak lehet (és mondom ezt C# fejlesztőként), mert tragédia amit az utóbbi 5 évben az MS művelt.
Aztán meg megy az értetlenül nézés részükről, hogy miért nem fejleszt senki Silverlightban/winRT alkalmazásban/universalApp-ban (mikor éppen melyik volt a sláger)? Mikor alapvetően egy egyszerű HTML5-ös alkalmazás is natív élményt hoz windows-on, és portolni is jóval könnyebb utána más platformokra, vagy sokan eleve Xamarinnal futnak neki, mert akkor kapásból célozni tudják a többi platformot is.
Most meg, hogy már IOS-ről, Android-ról is lehet portolni appokat universalApp-á, végképp ki lesz az a hülye, aki nekiáll nulláról universalApp-ot készíteni? -
-
Ja igen:XAMLben is megpróbáltam, de...
<TextBlock x:Name="doboz1" Margin="0" TextWrapping="Wrap" Text="Az Apple a tegnapi napon igazi bombát dobott a piacra, ugyanis bejelentették, hogy a Metal API-t az iOS-ről áthozzák a Mac OS X új verziójára is. Ez az iparágon belül visszás nézeteket váltott ki. Önmagában nincs baj azzal a politikával, ha valaki a szabványok mellett készít saját technológiákat is, de az Apple esetében inkább arról van szó, hogy a szabványok helyett jött a Metal. A vállalat ugyanis teljesen visszafogta az OpenGL támogatását, és lassan ez igaz lesz az OpenCL-re is. Emellett a nyílt specifikációjú iparági szabványnak készülő Vulkan API támogatására vonatkozóan is mélyen hallgat a cég, ami egyfajta üzenet a fejlesztőknek, hogy válasszák a biztosan létező utat, vagyis a Metal API-t. Egyrészt a fejlesztők nézőpontja érthető, hogy számukra jóval egyszerűbb lenne, ha az Apple a szabványok mellett kardoskodna. Nyilván az OpenGL itt már nem tényező, de az OpenCL és az érkező Vulkan az. Ennek technikai akadálya nincs, de az Apple valószínűleg fél attól, hogy a Khronos Group a jövőben sem fogja kiszolgálni az igényeiket. Ez a legfőbb oka annak, amiért a Metal megszületett az iOS-re, mivel az OpenGL ES 2.0 akkoriban már rendkívül rossz API-nak számított a hatékonyság szempontjából. A Mac OS X-re történő elérhetőség pedig egy folyamat befejezése, vagy éppen kezdete?" FontSize="72">
<TextBlock.RenderTransform>
<TranslateTransform x:Name="doboz10" X="0" Y="0" />
</TextBlock.RenderTransform>
</TextBlock>
<Button Content="Start" Width="100" Height="50" Margin="10,10,682,509">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard x:Name="B1">
<DoubleAnimation Storyboard.TargetName="doboz10" Storyboard.TargetProperty="Y" From="0" To="-950" Duration="0:0:10" FillBehavior="Stop" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>De itt meg a szöveg elvágódik az ablak alján, + még nem jöttem rá, hogy a sebességet hogyan tekerem menet közben.
-
Itt van ez az msn-es példa, ami a doboz szélességét változtatja:
<EventTrigger RoutedEvent="TextBlock.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyWipedText"
Storyboard.TargetProperty="(TextBlock.Width)"
To="0.0" Duration="0:0:10"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>Elméletileg csak le kéne cserélnem a .Width-et valami másra, ami a függőleges pozíciót tekeri, de vagy nincs ilyen, vagy eldugták.
Az sem világos, hogy ha sikerül is beröffenteni, hogyan szabályozom mmenet közben a sebességét.
-
Karma
félisten
Hogyne lenne? DispatcherTimernek hívják.
Az eltolást szerintem egy TranslateTransform segítségével tudod a legjobban megoldani, az Y értékét kell növelned vagy számítanod.Sajnos nem tudok jó anyagról
Nekem az egyetemi jegyzetek voltak a kezdőlöket, aztán WP-s gyakorlattal állt össze a kép. Persze a WPF sokkal több, mint a Silverlight, de az alapok azonosak.
-
Karma
félisten
-
kingabo
őstag
Ha fixen 20 karakterre akarsz törni, akkor Skip és Take Linq-val, mintha lapozást akarnál megvalósítani, csak rekordok helyett karaktereid vannak.
Magát a problémát, amit így akarsz megoldani azt viszont nem értem. Biztos ez a megoldás rá, hogy 20 karakterenként lesz új sorod?
-
-
sztanozs
veterán
De minek tekered időzítővel?
Azért eseményvezérelt a rendszer, hogy az események vezéreljék, ne valami idióta időzítő.Amúgy:
bool EltolE = false;
Point Eredeti;
Point Eltolas = new Point(), UjErtek;
public Form1()
{
InitializeComponent();
}
private void pictureBox2_MouseDown(object sender, MouseEventArgs e)
{
Eredeti = e.Location;
EltolE = true;
}
private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
{
if (EltolE)
{
UjErtek = Eltolas - new Size(e.X - Eredeti.X, e.Y - Eredeti.Y);
if (UjErtek.X < 0) UjErtek.X = 0;
if (UjErtek.Y < 0) UjErtek.Y = 0;
if (UjErtek.X > global::TestControlMove.Properties.Resources.Turn_Right_Ahead_Final.Width - pictureBox2.Width) UjErtek.X = global::TestControlMove.Properties.Resources.Turn_Right_Ahead_Final.Width - pictureBox2.Width;
if (UjErtek.Y > global::TestControlMove.Properties.Resources.Turn_Right_Ahead_Final.Height - pictureBox2.Height) UjErtek.Y = global::TestControlMove.Properties.Resources.Turn_Right_Ahead_Final.Height - pictureBox2.Height;
using (Graphics g = pictureBox2.CreateGraphics())
{
g.DrawImageUnscaled(global::TestControlMove.Properties.Resources.Turn_Right_Ahead_Final, new Point(-UjErtek.X, -UjErtek.Y));
}
}
}
private void pictureBox2_MouseUp(object sender, MouseEventArgs e)
{
EltolE = false;
Eltolas = UjErtek;
} -
sztanozs
veterán
Form.KeyPreview a barátod.
Ú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!
- BESZÁMÍTÁS! ASROCK H310CM i5 8400 16GB DDR4 256GB SSD 1TB HDD GTX 1060 3GB Rampage SHIVA TT 500W
- DELL PowerEdge R640 rack szerver - 1xGold 6138 (20c/40t, 2.0/3.7GHz), 64GB RAM,4x1G RJ, HBA330, áfás
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- AKCIÓ! Gigabyte AORUS 16X (2024) Gamer notebook - i7 14650HX 16GB RAM 1TB SSD RTX 4070 8GBWin11
- LENOVO ThinkBook 13s - 13.3" FullHD IPS - i5-10210U - 8GB - 256GB SSD - Win11 - MAGYAR
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged