Laden...

Forenbeiträge von fagju Ingesamt 100 Beiträge

02.06.2010 - 10:35 Uhr

Du musst halt checken ob vor dem Expand/Collapse ein Doppelklick erfolgte.

Dieser Code ist evtl. nicht vollständig:

private bool _cancelExpandCollapse = false;
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
    if (_cancelExpandCollapse) {
        e.Cancel = true;
        _cancelExpandCollapse = false;
    }
}

private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e) {
    if (_cancelExpandCollapse) {
        e.Cancel = true;
        _cancelExpandCollapse = false;
    }
}

private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e) {
    _cancelExpandCollapse = true;
}
03.05.2010 - 07:52 Uhr

Ich brauche sowas auch immer mal wieder, tu dann aber über n Link fahren oder so, weil mir diese Benutzerunfreundlichkeit ziemlich egal ist. Ich bekomme ja was ich will, geht lediglich 1 2 sekunden mehr. Wegen sowas extra m Thread aufmachen würde ich bestimmt nicht, darum gabs ja evtl noch keine Anregungen in diese Richtung. ;D

28.04.2010 - 09:52 Uhr

in dem du nicht ans ende der main springst sondern mit einer bedingung (if) checkst ob eine 1 eingegeben wurde und denn den entsprechenden code ausführst.

wenn du konkretere hilfe willst musst du halt code posten.

23.04.2010 - 08:01 Uhr

z.B. so könntest das machen:

static void Main(string[] args) {
    Random rnd = new Random((int)DateTime.Now.Ticks);
    for (int i = 0; i < 10; i++) {
        int zufallsZahl = rnd.Next(int.MaxValue);
        Console.WriteLine("Zahl: {0} \t Gerundet: {1}", zufallsZahl, RundeAuf100(zufallsZahl));
    }
    Console.ReadLine();
}

public static int RundeAuf100(int zahl) {
    int rest = zahl % 100;
    if (rest < 50) {
        return zahl - rest;
    } else {
        return zahl + (100 - rest);
    }
}
19.04.2010 - 09:46 Uhr

mit

Console.ReadKey().Modifiers

kannst du abfragen ob Ctrl, Alt oder Shift gedrückt ist.

Müsstest halt das Ballern auf eine dieser Tasten legen.

Ansonsten würde dir GetAsyncKeyState weiterhelfen.

29.03.2010 - 12:23 Uhr

registriere den MouseEnter- und MouseLeave-EventHandler auch für alle Unterelemente des Panels.

Ist diese Lösung besser als die von Lenny? Ich finde seine besser da nur 1 Event abgearbeitet werden muss.

29.03.2010 - 11:24 Uhr

Aber wenn er es ja nicht selektieren kann dann ist es ja das selbe wie wenn du einfach nur 1 Filtertyp angibst.

22.03.2010 - 07:49 Uhr

was ist denn genau dein problem?
Ich finde deine Lösung nicht so schlecht, abgesehen davon das ich alle zu Updatenden Controls in eine Liste packen und in einem Rutsch updaten würde.

Stört dich das Control.Invoke?

15.03.2010 - 09:29 Uhr

int summe = 0;

faktor mal faktor = produkt.
summand plus summand = summe.

was gibt 0 mal 100?

und was gibt 1 mal 100?

int produkt = 1;

produkt *= irgendwas.

11.03.2010 - 08:48 Uhr

man kann alles mit .ToString() in einen string umwandeln.

05.03.2010 - 08:54 Uhr

willst du das alles selber coden oder ein programm das das für dich macht?

auf livestream.com kannst du gratis dein bildschirm streamen, z.B. mit procaster:
http://www.livestream.com/procaster

05.03.2010 - 08:46 Uhr

du musst das MouseDown event abbonieren:

private void richTextBox1_MouseDown(object sender, MouseEventArgs e) {
    if (e.Button == MouseButtons.Right) {
        MessageBox.Show("hui");
    }
}
19.02.2010 - 15:48 Uhr

du prüfst ja mit deinen riesigen if's ob einer der spieler gewonnen hat. genauso kannst du auch prüfen ob alle felder "besetzt" sind.

also Anfangszustand ist in deinem Array (F) alles mit 0 gefüllt.

Du könntest entweder nochmals ein solch riesiges if bauen das in etwa so aussieht:

if (F[0] != 0 && F[1] != 0 && F[2] != 0 && F[3] != 0 && F[4] != 0 && F[5] != 0....

oder du baust dir eine Schleife die das übernimmt in etwa so:


private bool IstSpielUnentschieden(){
    for(int i=0; i<F.Length; i++){
        if(F[i] == 0) {
            return false;
        }
    }
    return true;
}

@JAck30lena
Könntest du genau erklären wie er sein Problem durch vernünftiges debuggen lösen soll?

05.02.2010 - 17:11 Uhr

und wenn du am ende des einen films den nächsten in einem zweiten control bereits lädst und dann direkt wenn der erste fertig ist die zwi controls swappest?

29.01.2010 - 12:10 Uhr
List<Int32> myList = new List<int>{4, 3};

warum ist das einmal Int32 und das andere mal int?

27.01.2010 - 11:21 Uhr

mit myThread.Join kannste auf einen Thread warten.

Thread t = new Thread(new ThreadStart(hui));
t.Start();
t.Join(); //hier wird gewartet
26.01.2010 - 12:18 Uhr

Schon versucht die Margins einzustellen?

22.01.2010 - 10:30 Uhr

so kannste zufällig einen Trick pro "würfel" auswählen:

private void GetRandomTrick() {
    Random rnd = new Random((int)DateTime.Now.Ticks);

    int rndPlacement = rnd.Next(0, a_CubePlacement.Length - 1);
    e_CubeSide placement = a_CubePlacement[rndPlacement];
    int rndFlip = rnd.Next(0, a_CubeFlip.Length - 1);
    e_CubeSide flip = a_CubeFlip[rndFlip];
    int rndRotation = rnd.Next(0, a_CubeRotation.Length - 1);
    e_CubeSide rotation = a_CubeRotation[rndRotation];
    int rndDirection = rnd.Next(0, a_CubeDirection.Length - 1);
    e_CubeSide direction = a_CubeDirection[rndDirection];

    string s = string.Format("Your trick:\n{0}, {1}, {2}, {3}", placement, flip, rotation, direction);
    MessageBox.Show(s);
}
21.01.2010 - 08:52 Uhr

mit virtual/override wie zommi schon gesagt hat

14.01.2010 - 13:48 Uhr

wissenschaftlich ist mit allen excponenten.
engineering ist mit 3er sprüngen (kilo/mili mega/mikro giga/nano usw.)

hier findest du eine funktion die das für dich macht:
double in engineering notation darstellen

13.01.2010 - 15:48 Uhr

mit ColorBlend kannst du das noch etwas besser tunen.

das hier ist von gelb nach lau über rot:

Rectangle thisRect = new Rectangle(50, 50, 100, 100);
SolidBrush brush = new SolidBrush(Control.DefaultBackColor);
LinearGradientBrush CircleBrush = new LinearGradientBrush(thisRect, Color.Red, Color.Yellow, 65);
    ColorBlend blend = new ColorBlend();
    blend.Colors = new Color[] { Color.Red, Color.Red, Color.Yellow, Color.Yellow };
    blend.Positions = new float[] { 0f, 0.05f, 0.75f, 1f };
    CircleBrush.InterpolationColors = blend;
e.Graphics.DrawArc(new Pen(CircleBrush, 25), thisRect, 115, 157.6f);

CircleBrush = new LinearGradientBrush(thisRect, Color.Red, Color.Blue, 75);
    blend = new ColorBlend();
    blend.Colors = new Color[] { Color.Red, Color.Red, Color.Blue, Color.Blue };
    blend.Positions = new float[] { 0f, 0.30f, 0.95f, 1f };
    CircleBrush.InterpolationColors = blend;
e.Graphics.DrawArc(new Pen(CircleBrush, 25), thisRect, 270f, 157.6f);
29.12.2009 - 11:58 Uhr

die komponenten (controls) sind ja gratis.

28.12.2009 - 16:30 Uhr

du kannst das in etwa so machen:

void richTextBox1_VScroll(object sender, EventArgs e) {
    int idx = richTextBox1.GetFirstCharIndexFromLine(5);
    Point p = richTextBox1.GetPositionFromCharIndex(idx);
    p.X = pictureBox1.Location.X;
    p.Y = p.Y + richTextBox1.Location.Y;
    pictureBox1.Location = p;
}

bei diesem (hässlichen) code wird die picturebox an die linie 5 geheftet.

20.11.2009 - 09:25 Uhr
len = 0;
UInt16 capacity = 2000;
IntPtr pBuffer = Marshal.AllocCoTaskMem(capacity);
int retValue = ReceiveData(pBuffer, capacity, ref len);

byte[] data = new byte[len];
for(int i=0;i<len;i++){
    data[i] = Marshal.ReadByte(pBuffer, i);
}

wobei bei meiner testDLL auch diese methode geklappt hat:

UInt16 len = 0;
UInt16 capacity = 2000;
IntPtr pBuffer = Marshal.AllocCoTaskMem(capacity);
int retValue = GetByteArray(pBuffer, capacity, ref len);

byte[] data = new byte[len];
Marshal.Copy(pBuffer, data, 0, len);

btw. du schreibst beim C code das die funktion int16 zurück gibt, in C# schreibst du aber Int32.

20.11.2009 - 00:29 Uhr
[DllImport("My.dll", CharSet = CharSet.Ansi)]
public static extern Int32 ReceiveData(IntPtr pUserData, UInt16 nUserDataLength, ref UInt16 pRealLength);

void hui() {
	UInt16 len = 0;
	UInt16 capacity = 2000;
	IntPtr data = Marshal.AllocCoTaskMem(capacity);
	int retValue = ReceiveData(data, capacity, ref len);

	string strData = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(data, len);
}

versuchs mal so

19.11.2009 - 15:18 Uhr

Hey

ich habe ein mühsames Problem mit einer DLL die in mein Projekt eingebunden ist. Es kommt immer diese Fehlermeldung:


Error

Could not load file or assembly 'TpcFinderNet, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren. (Exception from HRESULT: 0x800736B1)

OK

Wenn ich die TpcFinderNet.dll mit einer alten austausche geht alles wunderbar. Das Problem ist, das ich eine ältere Version der Software kompilieren muss, dafür checke ich eine alte Version per SVN aus und kompiliere die nur generiert mir das immer eine solche Fehlerhafte dll. Ich habe keinerlei Änderungen an dieser DLL vorgenommen und verstehe überhaupt nicht warum und wieso es nicht funktioniert.

Hat jemand evtl eine Idee was da schieflaufen könnte?

Lars

P.S.
Das Problem tritt nur auf anderen PCs auf, auf meiner Entwicklungsmaschine geht alles wunderbar.

Die DLL ist C++ und wird in eine C# solution eingebunden.

13.11.2009 - 17:14 Uhr

meinst du sowas wie das seti programm und diese "größte primzahl" finden programme?

nein, denn das wäre ja nicht was sinnvolles.

10.11.2009 - 13:13 Uhr

hmmm, also wenn ich das richtig verstehe willst du ein struct array von dieser C++ Dll holen?

wenn ja, kannste dir ja mal das angehängte testprojekt angucken. test.sln ist das C# projekt welches n struct array von der testDLL füllen lässt.

evtl. ist dieser link auch noch interessant für dich.

10.11.2009 - 09:09 Uhr

sehen die daten im memory genau gleich aus in beiden fällen?

19.10.2009 - 16:59 Uhr

Ist aber eine etwas einseitige Rechnung nicht?
Irgendwie sind das alles ökonomische Probleme die du ansprichst.

Es ist schon so das eine "grössere" Maschine effizienter arbeiten kann, nur fehlen trozdem 4-5 mal mehr Bäume. Diese Maschine müsste schon verdammt Effizient sein, zumal sie ja auch noch das abholzen, aufforsten, transportieren, verarbeiten (Papierherstellung braucht verdammt viele Chemikalien) ausgleichen müsste.
Wenig Overhead != günstiger per se. Sonst würde man ja immer UDP dem TCP vorziehen, dem ist aber nicht so 😉

Verteil in die ganze Welt musst du das sowieso schon. Es würde aber eben wieder weniger verschickt, da ja wie gesagt das Thai-Zeugs in Asien bleiben kann und nicht nach Europa geschickt werden. Also der zweite Absatz macht mir ehrlich gesagt generell recht wenig Sinn.

Die Lagerprobleme sind ebenfalls wieder ein fast ausschliesslich ökonomisches Problem. Der mehraufwand wirkt sich auf Zeit (Geld) und Arbeitsleistung (Geld) aus und kaum auf verbrauchte Rohstoffe oder Energie.

Wenn ich ein ganz bestimmted Produkt will, dann muss ich auch darauf warten. Gut Ding will Weile haben. Auch das ist wieder ein Luxus Problem. Der Umwelt ist es scheiss egal ob das "highly customized" Produkt direkt an Lager ist. Muss der Endkunde sich halt ein wenig gedulden, man kann nicht immer alles direkt haben.

Etwas komisch ist auch das du zum Schluss sagst das die einzelnen Sprachen mehr Platz brauche -> Overhead. Aber die Gesamtmenge bleibt ja immer die gleiche, da kann die eine Variant ja nicht auf einmal Overhead produzieren, denn gelagert werden ja beide. Bedenke der Mehraufwand bei der Lagerung geht fast ausschliesslich auf Kosten des Portemonnaies und nicht der Umwelt.

19.10.2009 - 15:19 Uhr

Potenzieren im Homöopathischen sinne? ;D hehe

Der Schaden für die Umwelt würde ganz bestimmt kleiner ausfallen als mit dem aktuellen System, für das Portemonnaie sieht das etwas anders aus. Ich finde halt, das Umweltschutz nicht nur dann ok ist, wenns auch mit Geldsparen verbunden ist, sondern auch wenn man halt dadurch einen Verlust erleidet. Das heist das Kohle nicht immer das primäre Optimierungsziel sein sollte.

19.10.2009 - 14:13 Uhr

Es wird wohl kaum so sein, das Umwelttechnische überlegungen dafür verantwortlich sind wie die Handbücher gedruckt werden. Es geht dabei wie sonst auch immer ums Geld. Man müsste dann die Verpackung speziell für einen Markt "abfüllen", es laufen dadurch aber nicht mehr Maschinen, eher weniger da solche Arbeiten vermehrt durch Menschen erledigt werden müssten. Es würden weniger Rohstoffe verbraucht (Papier fällt ja nicht vom Himmel runter). Der Transport ist immernoch der gleiche (Druckerei -> Abpackerei).

Ich habe vor 4 Wochen einen Drucker gekauft. Ein Teil des beigelegten Mülls war in allen Sprachen dieser Welt, ein anderer in jeweils 4 Sprachen (die üblichen verdächtigen wie Franz, Engl, Spanisch). Ein ganz kleiner Teil spezifisch für die Schweiz. Es ist einfach so das wenn das Handbuch am Stück in allen scheiss Sprachen gedruckt wird, der Preis sink und darum wird das so gemacht.

Meine Zahl (85%) ist nicht einfach so aus der Luft gegriffen, ich habe das bei diesem Drucker extra einmal genau angschaut. Der 4 Sprachige Teil habe ich dabei zum "useful" Haufen gelegt obwohl da ja auch 3/4 unbrauchbar sind für mich. Da machte es jedoch Sinn mehrere Sprachen zu verwenden da diese Bilder erklärten. Der Müll Stapel war mehr als 4 mal so gross.

(sry für das derailen des threads)

@gfoidl
eine kurze Installationsanleitung bekommt man ja meist dazu. 😉

19.10.2009 - 11:13 Uhr

Hallo!

Das Problem mit beigelegten Handbüchern ist u.a. das Gewicht, da man - wie pdelvo bereits schrieb - mehrere Sprachen anbieten muss.

Nein? Ich finde es total daneben das die Handbücher immer in 100 verschiedenen Sprachen daherkommen. 1. bin ich kein Abfalleimer der 85% des mitgelieferten Papiers gleich wieder entsorgen kann und 2. ist das eine Verschwendung von Papier & Toner und schadet somit der Umwelt. Wenn ein Handbuch in den jeweiligen Landessprachen gedruckt ist, habe ich kein Problem damit, aber was bitte hat Thai in einem Handbuch zu suchen das in Europa verkauft wird?

@Topic
Ich denke das die Hilfe (F1) das mitgelieferte Handbuch von MS ist.

16.10.2009 - 12:33 Uhr

warum nutzt du nicht die GZipStream Klasse?

13.10.2009 - 10:41 Uhr

Danke für die Infos.

13.10.2009 - 10:14 Uhr

Danke für die fixen Antorten/Bestätigungen.

@gfoidl
Ich muss erst rausfinden ob ich bei einem Fehler die Schlaufe nicht einfach weiterlaufen lasse. Solche try{}catch{} blöcke hat es leider relativ oft und ich bin total verunsichert wo es nun was braucht.
Du meinst also das ich alle try{}catch{} welche nur ein throw; drinn haben auch einfach weggelassen werden können?

@Peter
Ja mir hats eben auch etwas des Hirn verbogen als ich dann meinen eigenen Code gelesen habe. Erschien mir nicht so intuitiv, war mir deswegen nicht sicher ob das eben einfach so ist weil ichs noch nie gebraucht habe. Wie meinste denn abbruch bedingung? Das kann ich ja nicht anders machen als mit continue.

LINQ kann ich nicht benutzen (.NET 2.0 und VS 2005)

13.10.2009 - 09:42 Uhr

hi

Ich habe gerade eine Funktion umgeschrieben welche massiv verschachtelt war, sah etwa so aus:

for (int i = 0; i < iwas.Count; i++) {
	// etwas code
	if (iwas) {
		if (iwas anderes) {
			try {
				hui buuh = getBuuh();
				if (buuh != null) {
					// bizli code
					for (int j = 0; j < nBlks; j++) {
						hui buuh = getBuuh();
						if (buuh != null) {
							//viel code
						}
					}
					// bisschen code
				}
			} catch (Exception) {
				throw;
			}
		}
	}
}

ich hab dann das in etwa so umgeschrieben:

for (int i = 0; i < iwas.Count; i++) {
	// etwas code
	if (!iwas) {
		continue;
	}
	if (!iwas_anderes) {
		continue;
	}
	try {
		hui buuh = getBuuh();
		if (buuh != null) {
			// bizli code
			for (int j = 0; j < nBlks; j++) {
				hui buuh = getBuuh();
				if (buuh == null) {
					continue;
				}
				//viel code
			}
			// bisschen code
		}
	} catch (Exception) {
		throw;
	}
}

Bis jetzt habe ich jedoch noch nie das Keyword continue verwendet und darum kommt mir das ganze etwas komisch vor. Was findet Ihr besser, braucht Ihr continue oft oder gar nicht?

(Das waren zwei solche Schleifen, hab die auch noch vereinheitlicht und in 3 Methoden gestückelt, damit es etwas einfacher lesbar wird).

02.10.2009 - 11:36 Uhr

warum nicht Clipboard.SetImage ?

01.10.2009 - 14:03 Uhr

so klappts bei mir:

private void textBox1_TextChanged(object sender, EventArgs e) {
    const int maxChars = 10;

    TextBox tBox = sender as TextBox;
    if (tBox == null) return;
    if (tBox.Lines.Length < 1) return;

    int selStart = tBox.SelectionStart;
    int line = tBox.GetLineFromCharIndex(selStart);
    int lineLen = tBox.Lines[line].Length;
    if (lineLen > maxChars) {
        // check if character is inserted at the end of the line
        int startChar = tBox.GetFirstCharIndexOfCurrentLine();
        if (selStart - 1 == startChar + maxChars) {
            tBox.Text = tBox.Text.Insert(selStart - 1, Environment.NewLine);
            tBox.SelectionStart = selStart + 2;
        } else {
            tBox.Text = tBox.Text.Insert(selStart, Environment.NewLine);
            tBox.SelectionStart = selStart;
        }
    }
}
28.09.2009 - 15:08 Uhr

versuchs doch mal mit nem Timer. in etwa so:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            _mouseOverTimer = new Timer();
            _mouseOverTimer.Interval = 10;
            _mouseOverTimer.Tick += new EventHandler(_mouseOverTimer_Tick);

        }

        Timer _mouseOverTimer;
        int _deltaSize = 1;
        int _currentSize = 20;

        private void _mouseOverTimer_Tick(object sender, EventArgs e) {
            if ((_currentSize >= 30 && _deltaSize == 1) || (_currentSize <= 10 && _deltaSize == -1)) {
                _mouseOverTimer.Stop();
            }

            _currentSize += _deltaSize;
            this.pictureBox1.Invalidate();
        }

        private void pictureBox1_MouseLeave(object sender, EventArgs e) {
            _mouseOverTimer.Stop();
            _deltaSize = -1;
            _mouseOverTimer.Start();
        }

        private void pictureBox1_MouseEnter(object sender, EventArgs e) {
            _mouseOverTimer.Stop();
            _deltaSize = 1;
            _mouseOverTimer.Start();
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e) {
            e.Graphics.DrawEllipse(Pens.Red, new Rectangle(0, 0, _currentSize, _currentSize));
        }
    }
}
25.09.2009 - 17:12 Uhr

läuft die .exe?

18.09.2009 - 14:55 Uhr

so in der art:

foreach (Control c in this.Controls) {
    try {
        c.Click += new EventHandler(AnyControl_OnClick);
    } catch {
        MessageBox.Show(c.Name);
    }
}

private void AnyControl_OnClick(object sender, EventArgs e) {
    MessageBox.Show(sender.ToString());
}

???

14.09.2009 - 15:59 Uhr
/// <summary>
/// Calculates the effective string width on the display.
/// </summary>
/// <returns>The width and height of the given string on the display.</returns>
public SizeF MeasureDisplayStringWidth(string text, Font font) {
    System.Drawing.StringFormat format = new System.Drawing.StringFormat();
    System.Drawing.RectangleF rect = new System.Drawing.RectangleF(0, 0,
                                                                  1000, 1000);
    System.Drawing.CharacterRange[] ranges = 
                               { new System.Drawing.CharacterRange(0, 
                                                       text.Length) };
    System.Drawing.Region[] regions = new System.Drawing.Region[1];

    format.SetMeasurableCharacterRanges(ranges);

    regions = graphics.MeasureCharacterRanges(text, font, rect, format);
    rect = regions[0].GetBounds(graphics);

    return new SizeF((rect.Right + 1.0f), (rect.Bottom + 0.5f));
}

die habich irgendwo gefunden, weiss nicht mehr wo.

11.09.2009 - 15:11 Uhr

datei umbenenen, datei kopieren, erste datei an ort der zweiten kopieren und umbenennen, freuen?

10.09.2009 - 17:57 Uhr

deineForm.Height ist mit dem zeugs und deineForm.ClientSize.Height ist ohne das zeugs.