Solange der Speicher reicht.
Ein "double" brauchen 8 Byte, eine Millionen Werte belegen also 8MB. Und soviel zusammenhängenden Speicher bekommst du ohne Probleme.
Ab 1GB, also ca. 125 Millionen Elementen könnte es Probleme geben, bis dahin sollte es glattgehen.
P.S.:
Wenn du also das "richtige" Ergebnis haben willst ... die 1,5 ... dann musst du dafür sorgen, dass der Compiler erkennt, dass mind. eine von den Zahlen, als double erkannt wird.
z.B.
double d = 3.0 / 2;
oder auch
double d = (double)3 / 2;
Das ist so eine Art Assistent. Im "ViewModel" gibt es einen Member der einen Bearbeitungshinweis für den User in der View meldet. In diesem steht ein Verweis auf die Property die der User als nächstes bearbeiten soll. Also soll die View anhand dieser Property in das Control springen das zu dessen Bearbeitung vorgesehen ist ( = TwoWay darauf gebunden ist) Und noch ein Paar andere Klickibuntisachen, aber das wäre mal der Anfang.
das ist irgendwie so einfache Mathematik,
warum rechnest du nicht für die Eck-Punkte des Bildes das mal per Hand und Taschenrechner nach und vegleichst dann im Debugger die Werte?
Dann siehst du doch genau die Zeile im Quelltext, ab der die Werte der Variablen von deiner Erwartung abweichen...
Dafür macht man sich üblicherweise eigene structs bzw. Klassen.
Also ne struct/class GetränkeEigenschaften.
Dann kannst du den ctor von Getränk mit einem einzigen Objekt füttern.
Du solltest uns aber vielleicht schreiben was du wirklich machen willst. Was du beschreibst klingt nämlich nach einem Y eines XY Problems.
Ich arbeite mit dem SDK von SAP Business One bzw dessen Kapselung von Coresuite. Das Problem ist das es dort kein BeginInvoke gibt.
Workaround:
Ich kann WinForms erstellen und mit der Methode LoadToSAP() nach SAP laden lassen, diese Controls auf der WindowsForm haben dann ein BeginInvoke(). Würde es funktionieren wenn ich eine solche Form im Hintergrund laden lasse und dort dann meine Funktionsaufrufe ausführen lasse? Ich probiere es mal aus. Ich dachte es gäbe eine Möglichkeit direkt etwas in die Nachrichtenschleife zu schreiben wenn man die ThreadID weiß.
Andere Möglichkeit:
void ExecuteGuarded(Action a)
{
try
{
a();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
void button1_Click(object sender, EventArgs e)
{
ExecuteGuarded(() =>
{
// Mach was
});
}
Verwende ich massig in z.B. Web-Services, um Exceptions zu loggen und bestimmte Exceptions in andere zu konvertieren (damit der Client in bestimmten Fällen einen "fault" gemeldet bekommt mit dem er etwas anfangen kann).
c#_newbie schrieb:
Wie würde das dann gehen ?
//In FormParent
FormChild child = new FormChild();
child.TopLevel = false;
child.Parent = this;
child.Show();
Allerdings ist das Child dann auf der Form, kein eigenes Fenster. So in etwa wie manche Programme in einen Hauptfenster Unterfenster haben die du verschieben kannst.
MFK schrieb:
Nein, da die Hashes nur für diesen einen Distinct-Aufruf gelten müssen. Damit hast du hier kein Problem mit veränderlichen Membern.
Ahh, hat Klick gemacht, vielen Dank
(Mindestens) Zwei Fehler:
1. Die Initialisierung darfst du nur einmalig außerhalb der Schleife vornehmen
2. Den Seedwert bei der Initialisierung solltest du weglassen (d.h. den Parameter 0), da du sonst bei jedem Programmstart immer wieder die selbe Zufallsfolge erhältst.
Außerdem reicht es, wenn du genau eine Random-Variable erstellt:
Random random = new Random(); // <- ohne Parameter wird die aktuelle Datum/Uhrzeit als Seedwert genommen
Achso,
ausführen tue ich den Prozess so:
try
{
// start the process with the info we specified.
// Call WaitForExit and then the using-statement will close.
using (Process exeProcess = Process.Start(process))
{
exeProcess.WaitForExit();
}
return 0;
}
catch (SystemException e)
{
Console.WriteLine("An ERROR have occurred: " + e.Message + ". Exception thrown by: " + e.Source);
}
Richtig so?
Hallo zusammen,
ich habe ein Resource-File angelegt unter Properties/Resources.resx, mit der Zugriffsmethode public.
In der XAML Datei kann ich auf die Properties per:
<Window x:Class="MY_NAME_SPACE.MY_MAIN_WINDOW"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:p="clr-namespace:MY_NAME_SPACE.Properties"
Title="A Titel"
MinHeight="200" MinWidth="680">
<!-- SizeToContent="WidthAndHeight" -->
<Grid>
<TabControl>
<TabItem Header="{x:Static p:Resources.MY_KEY_TO_DISPLAY}">
....
</Window>
anzeigen. Dies funktioniert, wenn ich das Programm laufen lasse. Allerdings zeigt er immer einen Fehler unten in der Fehlerliste an und er kann in der Entwurfsansicht das Fenster nicht darstellen. Wie mache ich es denn ganz richtig, dass ich den Fehler wegbekomme und die Entwurfsansicht behalte? Jemand einen Tip?
Danke
Hallo,
einziges wo ich es mir vielleicht noch mit viel Biegen und Brechen sinnoll vorstellen könnte wäre für Xml-Serialisierung. Also etwas in Richtung:
public interface IXmlSerializable
{
}
public class MyDataObject : IXmlSerializable
{
public string Name { get; set; }
public List<string> Entries { get; set; }
}
public static class IXmlSerializableExtensions
{
public static void Serialize(this IXmlSerializable dataObject, string path)
{
// .. run serialization
}
public static IXmlSerializable Deserialize(this IXmlSerializable dataObject, string path)
{
// ... run deserialization
}
}
<Grid>
<TreeView HorizontalAlignment="Stretch" Name="myTreeView" VerticalAlignment="Stretch" >
<TreeView.Resources>
<LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFD9F4FF" Offset="0"/>
<GradientStop Color="#FF9BDDFB" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static SystemColors.ControlBrushKey}" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFEEEDED" Offset="0"/>
<GradientStop Color="#FFDDDDDD" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="BorderThickness" Value="1.5"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="#adc6e5"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="IsSelectionActive" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="BorderBrush" Value="LightGray"/>
</MultiTrigger>
</Style.Triggers>
<Style.Resources>
<Style TargetType="Border">
<Setter Property="CornerRadius" Value="2"/>
</Style>
</Style.Resources>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
Ich hab diesen Schnipsel in meinen TreeView eingebaut. Er soll damit in etwa die Optik des Visual Studio Trees bekommen: Blaue Hintergrund-Markierung bei den Items (siehe TreeView.Resources) und diese Markierung mit abgerundeten Ecken (siehe TreeView.ItemContainerStyle)
Die Elemente in meinem TreeView füge ich über den Code ein. Seltsamerweise funktioniert das mit der Formatierung aber nur so halb:
- Das erste Element hat die richtige Farbe und die abgerundete Markierung
- Die nachfolgenden Elemente haben die richtige Farbe aber ihnen fehlt die "Abrundung" - Wieso?
Erst wenn ich im Code an jedes neue Element nochmal explizit den ItemContainerStyle vom Vorgänger zuweise klappt es. Das da oben kann ja wohl kaum so gemeint sein, das es für jedes Element deklariert werden muss?! (die ich ja vorher gar nicht kenne)