Laden...
H
Benutzerbeschreibung
Ich bin Hobbyprogrammierer und nicht so sehr erfahren. Für mich muss es immernoch Spaß machen und nicht nur um den Erfolg gehen.

Forenbeiträge von Hobby Programmierer Ingesamt 18 Beiträge

04.09.2013 - 14:22 Uhr

Nochmals Danke, nun habe ich es gelöst.

Ich dachte immer, ich könnte Klassen und Collections nur als Felder machen, und wusste nicht wie ich sie "explizit" kapseln könnte. Nun ist mir aufgefallen, dass es mit

{get; set;}

funktioniert. Ich muss einfach alles, was in dem Pfad zur Property auftritt, zu einer Property machen.

Grüße
HobbyProgrammierer

PS: INotifyPropertyChanged habe ich mir schon angeschaut 🙂

04.09.2013 - 12:13 Uhr

Vielen Dank, so funktioniert es, wenn ich den String gekapselt habe.

Das war aber nur aus Testgründen so, dass direkt an die ObservableCollection gebunden wird. 😉

Eigentlich soll an die Klasse Spiel gebunden werden,
die wieder das öffentliche Feld Spieler enthält, 1. Kann man Klassen kapseln, damit sie eine Property sind?
und erst dieser Spieler enthält dann die ObservableCollection. 2. Die ObservableCollection darf doch ein öffentliches Feld sein, oder?

Grüße im Voraus
Hobby Programmierer

03.09.2013 - 23:54 Uhr

Hallo,

wie im Titel schon angedeutet, versuche ich eine ListView an eine ObservableCollection zu binden.
Folgendermaßen funktioniert es auch:


ObservableCollection<Karte> Liste = new ObservableCollection();
public MainWindow()
{
   InitializeComponent();
            
   this.DataContext = Liste;
   Liste.Add(new Karte());
}


<ListBox ItemsSource="{Binding}" Grid.Column="0"/>

Da ich die ToString-Methode nicht überschrieben habe, erscheint auf diese Weise nur Namespace.Klassenname in der ListView.

Die Klasse Karte hat aber auch das Feld Name vom Typ string, und genau dieser String sollte in der ListView stehen.
Dann schreibe ich also im XAML:


<ListBox ItemsSource="{Binding}" DisplayMemberPath="Name" Grid.Column="0"/>

Und jetzt steht auf einmal nichts mehr in der Listview obwohl Name etwas enthält. Mein einziger Ansatzpunkt ist dieser Text in der Debug Ausgabe: > Fehlermeldung:

System.Windows.Data Error: 40 : BindingExpression path error: 'Name' property not found on 'object' ''Karte' (HashCode=37504295)'. BindingExpression:Path=Name; DataItem='Karte' (HashCode=37504295); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

Name ist allerdings richtig geschrieben und öffentlich.

Vielen Dank im Voraus
Hobby Programmierer

13.12.2012 - 13:30 Uhr

Ich weiß überhaupt nicht, ob das funktionieren würde, aber wie wäre es mit Wi-Fi Direct?

22.10.2012 - 18:51 Uhr

Hallo,

du hast nach Schlagworten gefragt, du sollst sie haben.
InkCanvas in MSDN
Das ist das InkCanvas, darauf lässt sich auf jeden Fall freihand zeichnen, das mit Linien und Rechtecken lässt sich sicher auch realisieren.

Viel Erfolg
Hobby Programmierer

13.09.2012 - 16:45 Uhr

Schau mal hier: C# Tripps und Tricks Mausposition

Die Property müsste sich ja auch auslesen lassen, oder?
Und es wird ja ausdrücklich erwähnt, nicht nur innerhalb des Fensters.

07.09.2012 - 18:38 Uhr

Hi,

sry erstmal für die späte Antwort, ich war lange nicht mehr an Windows.

Im Ergebnis des Profilings kann ich nichts schlimmes lesen (ich sehe sowas aber auch zum ersten mal):

--------------------------------------------------------------------------------
Starting profile on 07.09.2012 at 18:33:12

Operating System: Microsoft Windows NT/2000/XP/2003/Vista based Home Premium (32-bit), version 6.01.7601 Service Pack 1
Program Executable: c:\users\benutzername\documents\visual studio 2010\projects\robo\robo\bin\debug\ROBO.EXE
Program Arguments: 
Starting Directory: C:\Users\benutzername\Documents\Visual Studio 2010\Projects\Robo\Robo\bin\Debug\
Search Path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\

Options Selected:
     Simulate ShellExecute by inserting any App Paths directories into the PATH environment variable.
     Log DllMain calls for process attach and process detach messages.
     Hook the process to gather more detailed dependency information.
     Log LoadLibrary function calls.
     Log GetProcAddress function calls.
     Log debug output messages.
     Automatically open and profile child processes.
--------------------------------------------------------------------------------

Started "ROBO.EXE" (process 0xE9C) at address 0x01110000.  Successfully hooked module.
Loaded "NTDLL.DLL" at address 0x76F40000.  Successfully hooked module.
Loaded "MSCOREE.DLL" at address 0x67880000.  Successfully hooked module.
Loaded "KERNEL32.DLL" at address 0x755B0000.  Successfully hooked module.
Loaded "KERNELBASE.DLL" at address 0x75380000.  Successfully hooked module.
DllMain(0x75380000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNELBASE.DLL" called.
DllMain(0x75380000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNELBASE.DLL" returned 1 (0x1).
DllMain(0x755B0000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" called.
DllMain(0x755B0000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" returned 1 (0x1).
Injected "DEPENDS.DLL" at address 0x08370000.
DllMain(0x67880000, DLL_PROCESS_ATTACH, 0x00000000) in "MSCOREE.DLL" called.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "DEPENDS.DLL" called.
DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "DEPENDS.DLL" returned 1 (0x1).
GetProcAddress(0x755B0000 [KERNEL32.DLL], "FlsAlloc") called from "MSCOREE.DLL" at address 0x67886F3C and returned 0x755FF189.

STATUS_STACK_BUFFER_OVERRUN encountered
Entrypoint reached. All implicit modules have been loaded.
Exited "ROBO.EXE" (process 0xE9C) with code -1073740791 (0xC0000409).

Sind meine Einstellungen für das Profiling so richtig?

Danke im Voraus

03.09.2012 - 16:43 Uhr

Hi weismat,

Danke für den Tipp.
Ich habe das Programm jetzt mal probiert, zuerst habe ich die managed DLL darin geöffnet, dann hat er sich beschwert, dass ieshims.dll feht. Heruntergeladen, ins Programmverzeichnis getan, aktualliesiert, das DependncyWalker war zufrieden.
Mein Programm funktioniert trotzdem nicht.
Dann hab ich meine *.exe geöffnet und er bringt: > Fehlermeldung:

Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Im Internet habe ich gelesen, das könne man ignorieren, stimmt das?

Was meinst du mit Installation?

01.09.2012 - 17:13 Uhr

Die Firmware des TX-Controller wurde vor wenigen Tagen über RoboPro aktuallisiert.
Deshalb, Anleitung für C# und TX, hab ich die umFish50.dll heruntergeladen.
Bisher hatte ich beim Debuggen das Gefühl, dass nur auf die umFish50.dll versucht wird zuzugreifen.
Die ftMscLib.DLL habe ich mir gestern aus dem Downloadbereich von Fischertechnik heruntergeladen.

01.09.2012 - 15:52 Uhr

Hi Th69,

find ich toll, dass du gleich noch für mich weitersuchst.
Nein, das habe ich noch nicht gelesen.
Was bedeutet das also für mich?

Win7 32bit.

Danke

01.09.2012 - 14:29 Uhr

Hi chilic,

falls sie das tut, warum bekomme ich dann dann > Fehlermeldung:

Die DLL "umFish50.DLL": Die angegebene Prozedur wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007F) kann nicht geladen werden. ?

Ich dachte, Dllimport zu verwenden bringt nur was, wenn ich die Dll selbst verwenden will.

Hi gfoidl,

Dort liegt sie, und ich bekomme oben genannten Fehler.
Ich kann Instanzen von ihr erstellen, aber in ihren Methoden benötigt sie die unmanaged DLL, siehe oben.

Ich denke, hier geht es nicht um ein 32/64bit Problem, da

  1. Ich noch nie etwas an Ziel-CPU geändert habe
  2. Die DLLs normalerweise zusammenarbeiten sollen

Danke euch beiden, auch wenn ich noch nicht am Ziel bin

01.09.2012 - 13:58 Uhr

Hallo,

nach mehreren Stunden Google eröffne ich das Thema.
Ich habe eine DLL, auf die ich problemlos einen Verweis hinzufügen kann, benutzen kann ich sie dann auch. Diese DLL benötigt eine andere DLL, und wenn ich diese hinzufügen will, erscheint folgende Meldung:


Microsoft Visual C# 2010 Express

Es konnte kein Verweis auf "C:\Users...\Downloads\FishFaceTXCS\FishFaceTXCS\umFish50.dll" hinzugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder COM-Komponente ist.

OK

Daraus folgt für mich, dass das unmanaged Code ist, was auch naheliegt.
DLLimport kann ich meines Wissens nicht verwenden, da ja eine andere DLL darauf zugreifen möchte.
Gibt es in C# Möglichkeiten, einen Wrapper (ist noch gefährliches Halbwissen für mich) oder ähnliches zu schreiben? Oder muss ich die Herausgeber der DLLs kontaktieren?

Vielen Dank im Voraus
Hobby Programmierer

12.08.2012 - 20:41 Uhr

Ich weiß nicht, ob meine Möglichkeit umsetzbar ist, aber ich poste sie mal.

Sobald die Anwendung startet, könntest du im Code doch mit

string ComputerName = Dns.GetHostName();

(System.Net wird benötig) den Computernamen herausfinden

string UserName = Environment.UserName;

den aktuellen Benutzernamen herausfinden.

Und das lässt du dann zusammen mit aktueller Uhrzeit mit einem StreamWriter in eine zugriffgeschützte Datei auf den NAS schreiben, und hast auf deinem eigenen PC einen Parser für die Datei, der sie übersichtlich darstellt.

PS: Wenn nötig, kann der Zeitpunkt, zu dem das Programm geschlossen wird auch noch gespeicher werden.

08.06.2012 - 17:04 Uhr

Danke, das heißt, ich brauch diesen Blend nie wieder starten?

08.06.2012 - 16:54 Uhr

Hallo zusammen,

ich habe das VS 2012 Ultimate mit dem Webinstaller auf Windows 7 installiert.
Bekanntlich wird da ja auch Blend for Visual Studio mitgeliefert.

In Blend habe ich 2 Probleme:

  1. Wenn ich ein neues Projekt erstellen will, kann ich bei Sprache und Version nichts auswählen, die Listen sind einfach leer, folglich ist der OK Button deaktiviert.

  2. Wenn ich ein Projekt aus Visual Studio öffne, kann ich mir nur den Code anzeigen lassen, nicht den Designer.

Ich Hoffe ich habe euch alle Infos gegeben und würde mich über Hilfe freuen.

Grüße
Hobby Programierer

04.01.2012 - 23:15 Uhr

Hi,

ich habe ein Programm, an dem ich an einer bestimmten Stelle einen Neustart ausführen möchte. Mit folgendem Code versuche ich dies:


DialogResult dr = MessageBox.Show("Das Spiel ging unentschieden aus. Möchten Sie erneut spielen?", "Unentschieden", MessageBoxButtons.YesNo);
            if (dr == DialogResult.Yes)
                Application.Restart();
            else
                Application.Exit();

Egal, ob ich in der MessageBox auf Ja oder Nein klicke, wird die Form gleich 8 mal neu geöffnet und die "alte" Form wird geschlossen.

An was liegt es? An anderen Stellen im Programm mache ich mit dem gleichen Code einen Neustart und es funktioniert wie es soll.

Vielen Dank im Voraus

17.12.2011 - 23:25 Uhr

Hi,

ich bin daran, eine Tic Tac Toe Oberfläche zu programmieren.
Nun stehe ich vor dem Problem, die Oberfläche, also das wo je nach Spieler (PC oder echter Spieler) ein X oder ein O angezeigt wird, mit Schleifen ansteuern zu wollen.
Dazu wurde ich auf folgenden Artikel verwiesen: [FAQ] Variablennamen zur Laufzeit zusammensetzen
Ich würde es natürlich gerne über die "saubere" Methode mit Listen machen.
Wie ich mir die Oberfläche vorstelle sieht man im Anhang.
Dort soll jeder Bereich, den ich mit dem Snipping Tool Marker markiert habe anklickbar sein, worauf dann ein X erscheint. Allerdings soll auch wenn der Computer am Zug ist ein O erscheinen. Hierzu erscheint mir keine genannte Liste sinnvoll.

Wer könnte mir eine Möglichkeit nennen?

Vielen Dank im Voraus
Hobby Programmierer

17.12.2011 - 20:56 Uhr

Hi,

habe folgendes Problem.
Habe innerhalb von der Form Load Methode mit


            for (int i = 0; i < 9; i++)
            {
                lbl[i] = new Label();
                lbl[i].Size = new Size(60, 60);
            }

            lbl[0].Location = new Point(10, 10);
            lbl[1].Location = new Point(80, 10);
            lbl[2].Location = new Point(150, 10);
            lbl[3].Location = new Point(10, 80);
            lbl[4].Location = new Point(80, 80);
            lbl[5].Location = new Point(150, 80);
            lbl[6].Location = new Point(10, 150);
            lbl[7].Location = new Point(80, 150);
            lbl[8].Location = new Point(150, 150);

            for (int i = 0; i < 9; i++)
            {
                this.Controls.Add(lbl[i]);
            }

ein Array von Labels initallisiert um sie in for-Schleifen mit wenig Aufwand auswerten zu können. Soweit funktioniert auch noch alles gut.
Doch nun habe ich eine Klick-Ereignissmethode mit


        private void lbl[0]_Click(object sender, EventArgs e)
        {
            //inhalt tut hier nichts zur Sache
        }

erstellt. Nun bekomme ich für den Methodenkopf folgende Fehler:> Fehlermeldung:

Fehlerhafte Arraydeklaration: Beim Deklarieren eines verwalteten Arrays steht der Rangspezifizierer vor dem Variablenbezeichner. Zum Deklarieren eines Pufferfelds fester Größe verwenden Sie vor dem Feldtyp das fixed-Schlüsselwort. Fehlermeldung:
Die Arraygröße kann in einer Variablendeklaration nicht angegeben werden. (Initialisieren Sie sie mit einem new-Ausdruck.) Fehlermeldung:
; erwartet.

Mit dem ersten Fehler weiß ich gar nichts anzufangen.
Der zweite ist verwirrend wie nochwas, weil ich hier nichts deklariere.
Der dritte steht vermutlich im Zusammenhang mit dem zweiten.

Wenn ich wichtige Zusatzinformationen vergessen habe werde ich diese auf Anfrage ergänzen.
Wodurch entstehen die Fehler?

Vielen Dank im Voraus
Hobby Programmierer