Laden...
Avatar #avatar-2909.png
michlG myCSharp.de - Experte
Student + Programmierer Naturns - Südtirol - Italien Dabei seit 26.07.2007 3.430 Beiträge
Benutzerbeschreibung

Forenbeiträge von michlG Ingesamt 3.430 Beiträge

29.10.2010 - 11:10 Uhr

Hallo AlexWerz,

dann hast du deine XML-Datei vermutlich falsch platziert 😉
Nein im Ernst.. wieso willst du überhaupt im Designmodus die Konfigurationsdatei auslesen und die Daten von der DB laden?
Mich persönlich nervt es wenn da schon im Designer das halbe Programm läuft.

PS: Die manuelle Arbeit mit der XML Datei kann man sich sparen das es in .NET schon das Konfigurationsmodell gibt welches dir die ganze Arbeit abnimmt.
Guckst du hier: [Tutorial] Das neue Konfigurationsmodell im .NET Framework 2.0
Die Datei wird automatisch irgendwo gespeichert, und da hat man dann keine Zugriffsprobleme

Gruss
Michael

29.10.2010 - 10:59 Uhr

Hallo Philb,

du musst das setzen / rücksetzen vom Cursor nicht selbst managen.
Einfacher ist es wenn du deinem TextBlock (oder dem Container der den TextBlock enthält) den Cursor setzst.

Dann bleibt der Rest der Anwendung ganz normal und sobald der Mauszeiger sich über diesem Element befindet wird dieser in IBeam umgestellt.

Guck mal hier: How to: Change the Cursor Type

Gruss
Michael

28.10.2010 - 22:26 Uhr

Hallo munchflo,

mal ganz kurz gesagt macht der GarbageCollector keine Fehler.
Die Fehler macht immer der der zwischen der Tastatur und dem Stuhl (in meinem Fall - Bank) sitzt 😄

Der Code ist allgemein sehr unschön.
Da gibt es massenweise Parameter in den Methoden die nicht benutzt werden.

Zudem gibst du in der findTokenPosition Methode die Referenz auf Gamepieceposition zurück welche du schon selbst mitgegeben hast.
Das macht dann natürlich relativ wenig Sinn, da der Aufrufer die Referenz ja schon hat

Was soll der Code denn machen. Irgendwie geht da alles drei mal ins Kreuz, jeder ruft sich gegenseitig auf usw...

Gruss
Michael

28.10.2010 - 12:14 Uhr

Hallo,

wenn dein Converter auch Daten aus anderen Klassen braucht dann hast du ein Problem...

Wenn du das unbedingt im Codebehind machen willst dann kannst du einfach den Cellstyle der betreffenden Row setzen.
Und darin deine Farbe angeben.

Aber wie gesagt gehört sowas nicht in den Codebehind

Gruss
Michael

28.10.2010 - 11:00 Uhr

Hallo,

Doch die Objekte die ich benutze sind keine UIElemente bzw. davon abgeleitet (auch nicht möglich)

stimmt. Daran habe ich nicht gedacht 😃

Daher fällt auch diese Möglichkeit weg und ich muss sie wohl per hand setzen... doch wie?

Die Möglichkeit mit dem Converter funktioniert aber schon trotzdem.
Du bindest einfach das ganze Objekt an deine ComboBox mit dem Converter.
Im Converter kannst du dann die Operation mit deinem Objekt durchführen.

Daran musst du dann noch feststellen ob sich das Objekt geändert hat.
Wie du das machst bleibt dir überlassen, aber jedenfalls kriegst so das ganze Objekt in den Converter und kannst damit deine Kontrolle machen

Gruss
Michael

28.10.2010 - 10:34 Uhr

Hallo Quaneu,

die manuelle Manipulation ist nie gut.
Entweder du erstellst dir einen Converter der analysiert ob sich das Objekt geändert hat oder du fügst den Property ein Attached Property hinzu das im Prinzip das selbe macht.

Damit müsstest du auch an das Ziel kommen.
Weil mit dem manuellen rumgebastle machst du dir nur unnötige Probleme 😃

Grüsse
Michael

27.10.2010 - 13:50 Uhr

Hallo,

der Fehler sagt eigentlich schon alles.
Deine Unit Klasse ist weniger Zugreifbar als die Methode.

D.h. du kannst die Methode von aussen aufrufen aber nicht deine Unit Klasse.
Mach diese public, dann funktioniert es ohne Probs

Gruss
Michael

26.10.2010 - 21:45 Uhr

Hallo,

das Problem dabei ist dass du die Variable pictureBox2 nirgends definiert hast.
Also wenn du suchst dann findest du irgendwo ein


PictureBox pictureBox1;

Und natürlich musst du deine pictureBox2 auf definieren bevor du diese verwenden willst.

Das sind aber absolute Grundlagen die wir hier schon voraussetzen.
Bitte befasse dich mit eine paar guten Tutorials (z.B. 🛈 oder 📗 )

Beachte: [Hinweis] Wie poste ich richtig? 1.1 + 1.1.1 + 5 + 6.1

Gruss
Michael

26.10.2010 - 21:25 Uhr

Hallo Matze91,

Radnom Zahl hab ich, und wies der Designer macht hab ich auch schon gesehen.
Nur allein schon wenn ich das kopiere was der Designer erstellt, und dann für alle 1 eine 2 einsetze zeigt er mir fehler an...

Was für einen Fehler zeigt er dir an? So können wir nur mutmaßen woran das liegt.

Guck mal hier: [FAQ] Variablennamen zur Laufzeit zusammensetzen

Gruss
Michael

26.10.2010 - 19:20 Uhr

Hallo Shinzo,

du kannst einfach ein TabItem Style / Template erstellen.
Hier eine nette Artikelserie zur Customization vom TabControl: WPF TabControl Series
Darin zeigst du den Text dann einfach horizontal an
Guckst du hier: Anyone knows how to draw a vertical text?

Gruss
Michael

26.10.2010 - 19:03 Uhr

Hallo,

ha, hab das problem... war nen blöder fehler an einer anderen stelle 😃

Schön dass du das Problem lösen konntest.
Es wäre nett wenn du noch kurz erklären könntest woran es gelegen ist und wie es gelöst hat (nur für den Fall falls jemand mit dem selben Problem auf diesen Thread stösst 😃

Vielen Dank

Gruss
Michael

26.10.2010 - 15:02 Uhr

Ja, das Stackpanel sollte mit dem Window mitgehen (setze mal einen Background damit du das sicherstellen kannst).

wie meinst du, soviel platz wie sie wollen? meinst du damit, dass sie nicht genug platz "wollen"?

Jep so in etwa 😃
Also wenn du das StackPanel auf Orientation="Horizontal" setzst dann knallt er die Dinger einfach nebeneinander und gibt denen so viel Platz wie sie wollen (egal. ob du HorizontalAlignment im Frame auf Stretch setzst oder nicht).
Wenn es zu klein ist dann will das Frame wohl nicht größer sein 😉

Wenn du im Frame VerticalAlignment="Strecht" setzst dann muss sich dein Frame aber an das StackPanel (in der Höhe) anpassen.

Bist du dir sicher dass du nicht eher ein Grid verwenden willst?
Weil dann kannst du die Dinger strecken wie du willst

Gruss
Michael

26.10.2010 - 14:37 Uhr

Hallo,

in welche Richtung resizen sich deine Frames denn nicht?
In die Breite oder in die Höhe.

Wenn du das wegen der Breite meinst dann ist das klar, weil das Stackpanel gibt denen so viel Platz wie sie wollen (nicht mehr und nicht weniger).
Da wäre evtl ein Grid besser geeignet

Der Code sieht soweit jedenfalls richtig aus

Gruss
Michael

26.10.2010 - 14:22 Uhr

Hallo brev,

In meiner anwendung habe ich einen Stackpanel in das ich dynamisch frames reinlade. Wenn ich nun aber die Größe meiner Anwendung änder, scheint das Frame dieses nicht mit zu bekommen. Kann das sein?

Nö, eigentlich nicht 😉

Das StackPanel gibt seinen Kinder so viel Platz wie sie wollen 😃
Zeig mal ein relevanten Teil von deinem Code her

Gruss
Michael

26.10.2010 - 14:17 Uhr

Hallo,

mit dem UpdateSystem kopiert man in der Regel einfach die DLLs / Exe vom Programm.
Ich liefe das Programm auch immer mit einem Setup aus.
Danach kann man die Dlls einfach austauschen, ohne dass es Probleme gibt.
Natürlich müssen dann jedes mal wenn der User das Setup neu installiert die Updates gezogen werden.
Aber das ist wohl nicht das Schlimmste 😉

Gruss
Michael

25.10.2010 - 22:50 Uhr

Hallo Cuin,

wie gesagt ist mir nicht bewusst wieso dir die dritte Spalte angezeigt wird.
Vermutlich hast du in deinem DataSet eine überflüssige Spalte drinnen.

Definiere die Spalten einfach selbst (so wie ich es vorher erklärt habe).
Und damit ist das Problem schon so gut wie gelöst.

Gruss
Michael

25.10.2010 - 21:19 Uhr

Hallo Cuin,

du kannst ja einfach das AutoPopulateColumns auf False setzen und dir selbst die Spalten definieren.
Damit kannst du noch den Header usw. setzen wie es dir gefällt.

Wieso du eine dritte leere Spalte hast kann ich dir so ohne Details auch nicht sagen.

Grüsse
Michael

25.10.2010 - 13:38 Uhr

Hallo,

besser ist wenn du dir eine Liste (ObservableCollection) erstellst welche die einzelnen Elemente (Items) enthält.
Diese bindest du dann einfach an das TabControl und setzt IsSynchronizedWithCurrentItem="true".

Danach kannst du direkt in der Liste (Collection) das CurrentItem verändern.
Somit wird aus das aktuelle (selektierte) Item in dem TabControl geändert.

Damit hast du auch noch eine bessere Trennung zwischen Code + GUI, aber das ist immer noch nicht perfekt.
Deshalb würde ein Blick auf das MVVM Pattern nicht schaden, auch wenn das im ersten Moment wohl etwas oversized zu sein scheint 😃

Gruss
Michael

24.10.2010 - 20:37 Uhr

Hallo 1blankz7,

Mittlerweile bekomme ich die Fehlermeldung nicht mehr provoziert. Es erscheint der Debugger von VS 2010 und sagt, das eine TargetInvocationException nicht behandelt wurde.

Was steht denn in der InnerException?
Dort findet man oft die nötige Information wieso und weshalb es zur Exception kommt.

Ansonsten würde ich einfach mal damit beginnen die Exceptions mit try-catch abzufangen und den fehlerhaften Bereich somit einzugrenzen.

Dann fängst du an relevante Codeteile auszukommentieren bis das Problem nicht mehr auftretet.

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Gruss
Michael

24.10.2010 - 20:33 Uhr

Hallo lboy94,

Und ich muss also 2 Extra Properties machen, um die Werte einzeln zu verändern?

Ja, wenn du diese direkt ändern können willst dann wirst du nicht drum rum kommen.

Aber wieso genau ist dir das

Position = new Vector(x,y);

zu umständlich?

Wenn du das so machen musst dann ist das nicht weniger umständlich


X = x;
Y = y;

Sowas würde ich persönlich aber nicht empfehlen denn wenn du X und Y setzt dann werden 2 neue Objekte erstellt (weil es ja zwei mal im Setter auf das new stösst).
So einen Vector zu erzeugen dauert zwar nicht lange, aber trotzdem ist es nicht schön.

Gruss
Michael

24.10.2010 - 18:28 Uhr

Hallo,

in WPF kannst du entweder die Standard-Dialoge verwenden (die aus dem Microsoft.Win32 Namespace)

Oder hier ookii dialogs gibt es Dialoge im Vista / 7en Style.

Gruss
Michael

23.10.2010 - 10:41 Uhr

Hallo cemolade,


BitmapImage bi = new BitmapImage();
bi[imgint].BeginInit();

Wie du hast es zu einem Array gemacht?
Wenn es ein Array sein soll dann musst du auch bei der Deklaration die Variable als Array definieren.
Zudem musst du dabei beachten dass der Array bei der Deklaration zwar erstellt wird jedoch musst du die einzelnen Elemente selbst initialisieren.
D.h. die sind alle null und du kriegst schöne NullPointerExceptions 😃

Hier noch ein kleines Tutorial zu der Problematik [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1

Gruss
Michael

23.10.2010 - 10:37 Uhr

Hallo epidemic,

das ist in WinForms auch recht problemlos möglich.
Hier ein Tutorial von gfoidl das ich zufällig über das Inet gefunden habe 😉 Cropping Images

Wenn du das Image gecropped hast dann musst du es nur noch speichern

Gruss
Michael

23.10.2010 - 10:33 Uhr

Hallo mirrowinger,

Wo wird der Fehler angezeigt?
In deiner DLL oder im Code vom Client?

Vermutlich gibt du der DLL im Client immer noch ein Bild vom Type Bitmap anstatt Image mit.
Dadurch kracht es.

Gruss
Michael

23.10.2010 - 10:29 Uhr

Hallo ofbe,

wenn du unbedingt willst dann kann du auch ein neues ResourceDictionary erstellen und dieses dann in die Resource deines Windows laden.
Dabei hast du das schön getrennt.

Beispiel


  <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="MyProject/MainResources.xaml"/>
          <ResourceDictionary Source="MyProject/MainResources2.xaml"/>
        </ResourceDictionary.MergedDictionaries>     </ResourceDictionary>
    </Application.Resources>

Du könntest dann deine Dictionary-Dateien erstellen und diese dann so einbinden.

Als kurz gesagt gibt es die Faustregel dass man die Ressource so nah wie möglich und so weit wie nötig auslagern sollte.
Wenn du eine Resource in mehreren Windows brauchst dann ist es auch sinnvoll diese so weit auszulagern dass du von beiden darauf zugreifen kannst 😉

Hier ein kleines Tutorial dazu: Using Resource Dictionary in WPF

Gruss
Michael

22.10.2010 - 23:14 Uhr

Hallo,

Die Application hat keine Window.Resources sonder Application.Resources

Beispiel


<Application>
    <Application.Resources>
		<LinearGradientBrush x:Key="LinearGradientBrush" StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0.0" Color="Red" />
<GradientStop Offset="1.1" Color="Black" />
</LinearGradientBrush>
	</Application.Resources>
</Application>

Du kannst die Resource dann über {StaticResource LinearGradientBrush} laden.
Wenn du einen Style oder ein Template erstellst dann kannst du das x:Key weglassen, damit wird er automatisch für alle passenden Controls angewendet.

Gibt es eigentlich die Möglichkeit, dass ich WPF-Fenster erstelle und diese Children-Fenster in die Hauptanwendung bzw in das Top-Fenster einfach in einem panel inkludiere sozsagen quasi wie ein iframe, nur für wpf-windows

Ja. Schau dir mal das TabControl an.

Gruss
Michael

22.10.2010 - 22:08 Uhr

Hallo,

zusätzlich zu dem Tipp von Regenwurm möchte ich dich noch auf WCF hinweisen, was einen auf den ersten Blick zwar erschlägt weil es extrem umfangreich und mächtig ist, aber auf dem Zweiten merkt man dass es doch nicht so schlimm ist 😉

Guckst du hier WCF / WPF Chat

Das ist ein Tutorial bei dem ein WPF Chat erstellt wird.
Die Kommunikation erfolgt über WCF, dabei ist es (soweit ich dein Vorhaben verstanden habe) das was du suchst.

Grüsse

22.10.2010 - 19:53 Uhr

Hallo steschu,

Herbivore hat ein Tool geschrieben mit dem man reguläre Ausdrücke gut testen kann.
Guckst du hier: On-the-fly Regex-Tester: Regex-Lab

Und hier noch ein Tutorial dazu: [Artikel] Regex-Tutorial

Grüsse

22.10.2010 - 19:45 Uhr

Hallo,

da es sehr schwierig ist sowas in Worte / Text zu fassen hab ich schnell ein Beispiel gecoded.

Siehe:


using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;

namespace WpfApplication5
{
	/// <summary>
	/// Interaction logic for MainWindow.xaml
	/// </summary>
	public partial class MainWindow : Window
	{
		public MainWindow()
		{
			InitializeComponent();

			Countries = new ObservableCollection<Country>
			            	{
			            		new Country {Id = 5, Name = "Germany"},
			            		new Country {Id = 4, Name = "Austria"},
			            		new Country {Id = 6, Name = "France"},
			            		new Country {Id = 2, Name = "Italy"}
			            	};

			Persons = new ObservableCollection<Person>
			          	{
			          		new Person {Name = "Mustermann", Country=Countries[2]},
			          		new Person {Name = "Mustermann1", Country=Countries[0]},
			          		new Person {Name = "Mustermann2", Country=Countries[0]},
			          		new Person {Name = "Mustermann3", Country=Countries[3]},
			          		new Person {Name = "Mustermann4", Country=Countries[1]}
			          	};

			DataContext = this;
		}

		public ObservableCollection<Person> Persons { get; set; }
		public ObservableCollection<Country> Countries { get; set; }
	}

	public class Person : INotifyPropertyChanged
	{
		private string _name;
		private Country _country;

		public string Name
		{
			get { return _name; }
			set { _name = value;
				NotifyPropertyChanged("Name");
			}
		}

		public Country Country
		{
			get { return _country; }
			set { _country = value;
			NotifyPropertyChanged("Country");}
		}

		#region INotifyPropertyChanged Members

		public event PropertyChangedEventHandler PropertyChanged;
		
		private void NotifyPropertyChanged(string name)
		{
			var handler = PropertyChanged;
			if (handler != null)
				handler(this, new PropertyChangedEventArgs(name));
		}

		#endregion
	}

	public class Country
	{
		public int Id { get; set; }
		public string Name { get; set; }
	}
}


<Window x:Class="WpfApplication5.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
	<StackPanel Orientation="Vertical">
		<ListBox x:Name="ps" ItemsSource="{Binding Persons, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
		<ComboBox ItemsSource="{Binding Countries}" DisplayMemberPath="Name" SelectedItem="{Binding ElementName=ps, Path=SelectedItem.Country, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
	</StackPanel>
</Window>

Das wäre ein Weg das Problem zu lösen, aber wie gesagt führen viele Wege an das Ziel 😃

Gruss
Michael

22.10.2010 - 15:05 Uhr

Hallo,

IsSynchronizedWithCurrentItem brauchst du nicht zu binden.
Das gibt nur an ob das CurrentItem (SelectedItem) von dem Control mit dem CurrentItem in der Liste synchronisert werden soll.
Setze es einfach auf true, das Binding ist nutzlos.

Sind die Elemente in dieser LandCollection vom selben Typ wie deine Id_land von der selektieren Person?
Ist das id_land nur ein Index (ID) vom Land?
Weil dann wäre klar dass es so nicht funktioniert, wenn du komplette Landobjekte wählst und dass sagst setze mir 2 als SelectedItem.

Gruss
Michael

22.10.2010 - 14:25 Uhr

Hallo stefan123,

es ist so sehr schwierig zu sagen was du falsch machst wenn du uns nicht sagst was du machst 😉

Kurz gesagt würde ich das so machen


<ComboBox ItemsSource="{Binding MyCountries, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=SelPerson.idfs_land, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

Aber ohne weitere Details können wir die keine schöne Lösung sagen die 100%tig funktioniert!

Gruss
Michael

21.10.2010 - 22:36 Uhr

Hallo SunnyChris83,

Bei dieser Fehlermeldung weiß ich nun auch nicht weiter?!

Bitte eigne dir die Grundlagen an.
Wir setzen solche Dinge hier im Forum aus gutem Grund als Grundwissen voraus.

Hier findest du gute Tutorials zu C#: 🛈 📗

Die Exception sagt eigentlich schon alles. Im AnimatedControlTester.Resources gibt es kein Resources.wrong

Du darfst natürlich gerne im Forum fragen, aber dabei ist es wichtig dass die Regeln eingehalten werden.

Bitte beachte: [Hinweis] Wie poste ich richtig? Punkt 1 und 1.1

Gruss
Michael

21.10.2010 - 15:08 Uhr

Hallo SunnyChris83,

aber das funktioniert in Visual Studio 2010 nicht ohne Fehlermeldungen?

was für eine Fehlermeldung bekommst du??

Siehe: [Hinweis] Wie poste ich richtig? Punkt 5

Gruss
Michael

21.10.2010 - 12:30 Uhr

Hallo Deffcon,

du könntest evtl. die ganze Seite direkt in einem WebBrowserControl anzeigen.
Hier ein Tutorial dazu: Codeproject Webbrowser Control

Wenn du nur eine WinForms App erstellen willst die ähnlich aussieht dann musst du dich ein wenig in die LayoutContainer einlesen und die verschiedenen Control kennen und schätzen lernen.
Dazu ist folgendes interessant für dich: 🛈 📗

Gruss
Michael

21.10.2010 - 12:24 Uhr

Beim Auslösens des Commands wird dir diese Execute Methode aufgerufen.
Dabei bekommst du den sender und das EventArgs mit

Im EventArgs findest du eine Referenz auf das Command und dem Parameter und noch einiges mehr.

Josh Smith hat hier einen netten Blogeintrag dazu geschrieben Understanding Routed-Commands
Im BeispielCode kannst du abgucken wie das funktioniert

Du könntest evtl. auch ein stink normales Command (also nicht routed) verwenden.
Dabei bekommst du nur das Objekt als Parameter mit

Gruss
Michael

21.10.2010 - 11:50 Uhr

Hallo wpf23,

xxx hat ziemlich sicher folgendes gemeint.
Du gibst also einfach das Objekt im CommandParameter mit mit {Binding}
Dieses Objekt wird dann beim Aufruf der Execute Methode als Parameter mitgegeben

Diesen Objekt musst du dann nur noch Casten und das Problem löst sich wie von selbst 😃

Gruss
Michael

21.10.2010 - 11:48 Uhr

Hallo LatinChriz,

ich verwende für solche Fälle meist das Expression Blend.
Hier ein Beispiel wie man da einfach Testwerte übergeben kann:
WPF: Simulating data in design mode in Microsoft Expression Blend

Gruss
Michael

21.10.2010 - 10:29 Uhr

Hallo 1c3m4n,

die Parameter übergibt man normalerweise direkt beim Start indem man die verkettet.
Willst du diese übergeben nachdem das Programm schon gestartet wurde?
Wenn ja, dann guck mal hier: Kommandozeilenparameter zur Programmlaufzeit übergeben/aktualisieren

Gruss
Michael

21.10.2010 - 09:33 Uhr

Hallo Newbie83,

wenn man dazu das Canvas direkt verwendet hat man ein Problem (aber das hast du ja schon festgestellt 😃 )

Verwende besser ein ItemsControl und ein ItemsPanelTemplate
Beispiel:


 <ItemsControl ItemsSource="{Binding MyCollection}">
    <ItemsControl.ItemsPanel>
     <ItemsPanelTemplate>
      <Canvas />
     </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
   </ItemsControl>

Hier noch ein Link dazu: ItemsControl A to Z

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 6

Gruss
Michael

20.10.2010 - 21:34 Uhr

Hallo Findom,

verwendest du WPF oder WinForms?

Das Problem ist wie schon unconnected sagte dass irgendwas deinen Ablauf blockiert.
Da Async-Methoden asynchron aufgerufen werden sollte das nicht passieren.

Guck dir mal diesen Thread an: [FAQ] Warum blockiert mein GUI?
Denn wenn deine Aktion den GUI-Thread blockiert dann kann die GUI nicht mehr aktualisiert werden und somit hängt sich das Programm dann auf.

Gruss
Michael

20.10.2010 - 19:25 Uhr

Hallo DavidT,

anstatt des {Binding this} kannst du einfach {Binding} schreiben 😃

PS: Verwende besser Commands und gebe das aktuelle item im CommandParameter mit. Das ist besser als sich mit dem Tag zumzuplagen.

Zudem würde ich das Tag vom Button und nicht vom Image setzen.

Gruss
Michael

19.10.2010 - 18:19 Uhr

Hallo,

zusätzlich zu dem Hinweis von zero_x, möchte ich dich noch auf die SqlParameter hinweisen.

Wenn du die Queries nur so zusammenbastelst


// SQL-Befehl in string-Variable schreiben.
string scommand = "update login set adresse_id = " + txt_adressID.Text.ToString() + " where anmeldung = '" + comboBox1.Text.ToString() + "';";

machst du dir nur selbst das Leben schwer.
Erstens ist es fehleranfälliger.
Zweitens musst du darauf achten dass du die Typen richtig konvertierst und somit ist es auch fehleranfällig (speziell bei DateTime Werten usw.)
Drittens ist es sehr gefährlich weil die Benutzer über SQL-Injection einen Text (Query) reinschreiben könnten die dann ausgeführt wird und dir z.B. eine Tabelle löscht 😉

Du musst das natürlich nicht machen, aber es ist aus dem genannten Gründen zu empfehlen 😃

Grüsse

18.10.2010 - 18:17 Uhr

Hallo shooter277,

wenn du die Änderungen in der Datenbank sofort mitbekommen willst dann kannst du ein Feature verwenden das sich SqlDependency nennt.

Hier ein Beispiel dazu: http://www.codeproject.com/KB/database/chatter.aspx

Gruss
Michael

17.10.2010 - 14:17 Uhr

Hallo,

willkommen bei myCSharp.de

Du kannst in .Net dazu einfach die Random-Klasse verwenden.
Suche dazu einfach in der MSDN nach Random und du wirst ein schönes Beispiel finden 🙂

Bitte schau dir mal die Open Books an: 🛈 📗
Denn das sind absolute Grundlagen die wir hier vorraussetzen.
Siehe: [Hinweis] Wie poste ich richtig?

Wie schon Diräkt sagte verwendet man dazu hauptsächlich Unit--Tests die man dann täglich laufen lassen kann um alles zu überprüfen.

Gruss
Michael

17.10.2010 - 13:42 Uhr

Hallo wpf23,

du könntest das doch auch mit dem Fokus machen.
Oder passt dir das aus anderen Gründen nicht?

Gruss
Michael

17.10.2010 - 13:35 Uhr

Hallo,

Methoden bzw. Klassen bitte immer vorher in der MSDN nachschlagen denn dort sind diese schön erklärt 😃
Guckst du hier: MSDN Backgroundworker - ReportProgress Methode

Diese Methode löst das Event ProgressChanged aus und du kannst die Prozentanzahl des Fortschrittes mitgeben.

Setze mal testweise einen Breakpoint in deinen Methoden dann siehst du dass diese überhaupt nicht aufgerufen werden.

Wie gesagt ist es auch noch wichtig dass du das Event nicht zu oft auslöst, weil das könnte die GUI blockieren

Gruss
Michael

16.10.2010 - 23:34 Uhr

Hallo zusammen,

... aber vermutlich stimmt die Uhrzeit dafür nicht.

Doch, die stimmt fast immer 😃

Guck dir mal den folgenden FAQ Eintrag an: [FAQ] Warum blockiert mein GUI? und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Setze mal einen Breakpoint auf diese Zeile (progressbar1.value = AnzahlDerSortiertenLieder;) um zu sehen ob dein Programm überhaupt soweit kommt.

Rufst du überhaupt die ReportProgress Methode auf?

Noch ein kleiner Wink mit dem Zaunpfahl: Achte darauf dass du die ReportProgress-Methode nicht zu oft aufrufst.
Wenn du das nämlich nach jedem Lied machst, dann hängt sich die GUI ziemlich sicher halb auf und du siehst keinen Fortschritt.
Mach das besser zyklisch oder alle x Lieder einmal.

Gruss
Michael

16.10.2010 - 21:40 Uhr

Hallo blubb4321,

das was du da machen willst ist wohl so einfach nicht möglich.
Wenn ein Prozess mal läuft dann kannst du dem nicht ohne weiteres Werte neu übergeben.

Also dein Prozess startet und beginnt mit der Arbeit.
Dann startest du noch einen, dieser bemerkt dass es schon einen gibt, gibt diesen die Daten und killt sich.
Hier ist Beispiel wie man das implementieren kann: Single Instance Application Manager

Gruss
Michael

16.10.2010 - 15:56 Uhr

Hallo jogisarge,

noch ein kleiner Tipp vorweg.
Beachte dass du den GUI-Thread nicht blockierst und nicht von dem Worker-Thread auf die GUI zugreifst, weil sonst kracht es.

Siehe dazu: [FAQ] Warum blockiert mein GUI? und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Den Zugriff auf den Webservice musst du unbedingt in einen Thread auslagern, weil sonst blockiert dir dieser den GUI-Thread bis er fertig ist.

Gruss
Michael