Du kannst das beenden/schliessen in einen Finally-Block reinpacken.
müsstest die variablen dann nur noch außerhalb des Try-Blocks definieren.
aber das gehört alles zu den Grundlagen
mal was ganz einfaches,
starte die cmd (start -> ausführen -> cmd) und navigiere zum Pfad wo sich deine excel-datei befindet
(cd "C:\temp\myexcelfiles"). dort gib einfach mal den Dateinamen an ("MyExcelFile.xls" (was vllt
einige nicht wissen, ist die AutoComplete Funktion in cmd ->ersten buchstaben eingeben und Tab
drücken, oder *.xls und Tab)) und drück enter. Wenn das mit excel geöffnet wird ist das problem
woanders. wenn nichts passiert, müsstest du die Zuordnungen der Dateitypen mal überprüfen.
wäre die Messenger-Klasse aus dem
MVVMLight-Framework nicht das was du vorhast? du registrierst deine Klassen für eine bestimmte
Nachricht und reagierst dann drauf wenn sie erhalten wird.
Hallo, was du versuchen könntest wäre es deine Form zu einem Child des Desktops zu machen
Hier ist ein Beispiel wie Notepad in die eigene Form gequetscht wird aber das Beispiel dürfte sich auf
dein Problem leicht anpassen lassen (ja ich weiss, es ist vb6 Code, aber die API ist immernoch die
gleiche)
Fremdes Fenster in eigenes Fenster einbinden
was noch fehlen dürfte wäre die API um den Desktop handle zu ermitteln.
Das gleichzetige lesen ist kein Problem, das schreiben hingegen wird nacheinander ausgeführt.
Hallo,
bestimmt hattest du das hier schon gefunden, aber vllt hilft es dir ja mit den neuen erkenntnissen weiter: How to convert packed integer (16.16) fixed-point to float
was es jetzt hiermit auf sich hat würde mich auch mal interessieren, nur leider kann ich mir ebenfalls keine reim drauf machen -.-
wenn ich nicht einmal einen Shape-rechteckig anlegen kann, was ist dann neu an der .Net Sprache?
mit WPF wird das ganze nochmal auf die spitze getrieben.
Und .Net ist nur ein Framework! (ein Wrapper um die WinApi wenn man es genauer nimmt)
ich würde dir auch eher zu einer XML raten.
"wird nicht unterstützt"
Die Temperature von CPU kannst du nur auslesen wenn MainBoard/CPU den Wert unterstützt.
...
aber es muss ja eine möglichkeit geben die Temperatur auszulesen.
wenn du dennoch den wert trotzdem wissen willst nimm dir ein Thermometer in die Hand und fang an
an der CPU zu messen. nur drauf achten keine kurzschlüsse zu verursachen.
Ok jetzt mal im ernst. Was du machen kannst, ist dir eine neues Board zu kaufen, oder dir einen
Rechner suchen bei dem das möglich ist (Laptop vllt? Rechner deines Nachbarn, Freundes, ...) und
dort testen.
uhm, DataBinding? O.o
also wenn das Control von dir selbst ist, dann kannst du einige DependencyProperties registrieren und
dich daran binden. wenn das Control von jemand anderem ist (und du keinen einblick in den
Quellcode hast) dann bete dass der jenige DependencyProperties eingebaut hat, ansonsten müsstest
du selbst von dem Control ableiten und die DependencyProperties hinzufügen.
vllt kennt jemand anders noch eine bessere lösung
um dir jetzt nicht zu nahe treten zu wollen, aber die msdn liefert dir ein beispiel wie man die klasse verwendet. der rest ist dann eigenrecherche.
eigentlich müsste es ausreichen wenn du den Status setzt und dann das NotifyPropertyChanged-Event feuerst. Das Binding hast du ja schon.
Die nächste frage:
wieso definierst du das selbst? es reicht aus dem DataContext des DataGrids eine List<YourClass> zu
übergeben.
du kannst auf XAML ebene mit Style.Triggers und DataTrigger arbeiten. Müsstest dann nur selbst
einen Converter schreiben, der dir den vergleich liefert (-1 kleiner, 0 gleichgroß, und 1 größer ist
so das gängigste was du auch im Inet finden wirst).
Werte vergleichen, und dann entsprechend den Background setzen.
Wieso machst du das hier
DataGridRow row = dataGrid1.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
statt
item.BackgroundColor = Brushes.Orange;
Noch etwas Info:
Innerhalb des Projektes ist ein Ordner (libs) mit 2 Unterordnern (x86/x64) und die Dlls in den entsprechenden Versionen. Dazu noch die Dll SQLite.Interop.dll (nicht in den Unterordnern). Alle Dlls haben als Eigenschaft Copy Always gesetzt (Copy to Output Directory).
nun, die SQLite.Interop.dll muss im Verzeichnis deiner Exe vorhanden sein und die System.Data.SQLite.dll muss referenziert werden.
ich würde mal vorschlagen das Leerzeichen nach "Data Source" zu entfernen. (was eigt egal sein dürfte)
ansonsten stelle sicher dass deine Datenbank auch die Version 3 ist.
lade dir hier mal das Tool SmartDB runter (oder ein anderes was für dich ansprechender ist) und versuch dich mit dem Programm zur DB zu verbinden.
Falls nötig konvertiere deine DB in die Version 3.
und noch ein Tipp:
im Catch-Block definiere eine Exception variable und gebe die message in der TextBox aus
also so
catch (Exception ex)
{
TextBox1.Text = ex.Message;
}
EDIT: vergiss das mit dem Tool, hatte überlesen dass du schon eins verwendest
Du könntest doch auch eine Methode schreiben in dem der Index übergeben wird, und die SortId aller drauffolgenden Items um eins erhöht wird
in etwa so: (ungetestet)
private void MySortMethod(int InsertedAtIndex)
{
foreach(var item in MyList)
{
if (item.SortIndex > InsertedAtIndex)
{
item.SortIndex += 1;
}
}
}
Hallo,
ich kann heute abend (gegen 19 uhr) mal etwas code posten um zu zeigen wie man zur laufzeit die richige dll laden kann
hier der Code
Felder:
private Assembly _assembly;
private dynamic _ConnectionInstance;
Im Konstruktor:
try
{
var tmpPath = Path.Combine(
Environment.GetFolderPath(
Environment.SpecialFolder.MyDocuments ), "Database", "MySqliteDB.s3db" );
if ( !File.Exists( tmpPath ) )
{
var tmpPathSub = tmpPath.Substring( 0, tmpPath.LastIndexOf( '\\' ) );
if ( !Directory.Exists( tmpPathSub ) )
{
Directory.CreateDirectory( tmpPathSub );
}
//Hier müsste man eine neue Datei erstellen, aber in dieser DB sind schon Testdaten
File.Copy( Path.Combine( "Database", "MySqliteDB.s3db" ), tmpPath );
}
_connString = "Data Source=" + tmpPath + ";Version=3;";
_assembly = Assembly.LoadFrom( IntPtr.Size == 4 ? "libs/x86/System.Data.SQLite.dll" : "libs/x64/System.Data.SQLite.dll" );
CreateConnectionInstance();
}
catch
{
throw;
}
private void CreateConnectionInstance()
{
_ConnectionInstance = _assembly.CreateInstance( "System.Data.SQLite.SQLiteConnection" );
_ConnectionInstance.ConnectionString = _connString;
}
Noch etwas Info:
Innerhalb des Projektes ist ein Ordner (libs) mit 2 Unterordnern (x86/x64) und die Dlls in den entsprechenden Versionen. Dazu noch die Dll SQLite.Interop.dll (nicht in den Unterordnern). Alle Dlls haben als Eigenschaft Copy Always gesetzt (Copy to Output Directory).
ich arbeite hier noch mit einer älteren sqlite Version (v3), kann also sein dass man die Interop dll nicht mehr in den neueren Versionen braucht.
falls fragen bestehen, kann ich die wohl erst morgen beantworten
Soetwas einfaches hier schon probiert?
<Window.Resources>
<Style TargetType="{x:Type DropDownListItem}">
<Setter Property="BackgroundColor" Value="Green" />
</Style>
</Window.Resources>
du darfst nicht das Control an sich selbst färben, sondern musst dessen Items färben.
ist DropDown nicht ASP? O.o meinst du nicht vielleicht eher die ComboBox? Wenn Ja ersetze DropDownListItem durch ComboBoxItem
du kannst dir die x86 oder x64 dlls laden. ich kann heute abend (gegen 19 uhr) mal etwas code posten um zu zeigen wie man zur laufzeit die richige dll laden kann.
wenn du solange nicht warten kannst dann nimm die x86 version und stell dein Build von Any CPU auf x86 um.
Das Event tritt dann ja öfters auf als es soll. Weil wenn der User die Maus die ganze Zeit bewegt, tritt das Event regelmäßig auf.
Oder ich müsse das dann Abfangen das das Fenbster nur einmal geöffnet wird.
[FAQ] Event nur bei Benutzeraktion auslösen, nicht bei programmtechnischer Änderung
Neben dem .MouseOver-Event suche ich auch das .MouseLeave-Event um das Fenster wieder schließen zu können^^
wenn es dir nur darum geht paar inormationen anzeigen zu lassen dann lass einfach ein ToolTipText aufpopen.
hmm in der NotifyIcon-Klasse ist ein MouseMove-Event vorhanden. schonmal das versucht?
am besten du definierst einen Style in den Resourcen und setzt die Hintergund farbe der DropDownListItem auf deine gewünschte farbe.
Ja, wenn du nur SQL authentifizierung drinne hast kannste die Windows anmeldung nicht machen (sprich: Du kannst dich nur mit den Eingerichteten Benutzern im SQL-Server anmelden, logisch oder? XD).
Wenn das schon Drinne ist, dann aktiviere TCP-Tunneling und weise deinem Server einen festen port zu.
hier mal ein schönes Bild
SQL-Server: TCP-Connection kommt nicht zustande
Beim TextBlock wird es nur einmal gemacht, du müsstest wenn dann das selbst im ViewModel machen. ansonsten kannste mal eine TextBox nehmen (readOnly, vllt noch das Style des TextBlocks) und der müsste dann das automatisch immer machen (ich bin mir aber nicht zu 100% sicher)
Hast du in den Server Eigenschaften Server Authentication auf Sql Server und Windows Authentication Mode gestellt? (zu finden unter Security)
vllt noch Deep Copy als Stichwort
Hallo,
du kannst es mal mit RelativeSource und FindAncestor versuchen
ich habe z.B. folgendes Konstrukt.
<Window.Resources>
<DataTemplate x:Key="SomeThing">
<Grid DataContext="{Binding RelativeSource=
{RelativeSource Mode=FindAncestor, AncestorType=
{x:Type Grid}}, Path=DataContext}" Focusable="False" >
Hallo,
du kannst auch verknüpfungen in diesem Ordner anlegen: %USERPROFILE%\Links
siehe auch: how-do-i-programmatically-add-a-folder-to-the-users-favorites
für die jenigen die das buch nicht kennen, gibts hier von Google eine Leseprobe. nicht alle Seiten sind da zugänglich aber es reicht um sich ein Bild vom buch machen zu können.
Ich habe bei meinem ListView Steuerelement das markieren ausgeschaltet. Also wenn ein Item markiert wird wird das sofort aufgehoben...
aber ich möchte ja alles markieren können
was? du verhinderst dass man etwas markieren kann willst aber dass man etwas markieren kann?
oder willst du nur die farbliche hervorhebung abschalten? wenn ja, wie soll dann ein benutzer erkennen was grade selektiert ist?
guck mal hier: Change ListView SelectedRow BackgroundColor
oder verstehe ich hier was falsch?
Des weiteren ist mir nicht wirklich klar wie ich die Änderungen von unserer
Datenquelle (einer Schnittstelle) nach oben ins Model und ViewModel durchreichen soll
ihr habt doch bisher ir ein verfahren womit ihr Änderungen von der Schnittstelle mitbekommt (mittels
Timer, Events, ...). Diese Logik müsste nun ins Model. das Model informiert das ViewModel über
events und das VM die View über Binding (INotifyPropertyChanged als Stichwort)
Hallo,
ich hatte mal einen Router der am Anfang so lief wie er sollte, nach aber 6 monaten brach immer
wiedermal die Verbindung zusammen. erst ein Neustart brachte etwas abhilfe. Neuen Router gekauft
und das problem bisher nicht mehr gehabt. (keine Ahnung was ich vorher hatte, jetzt habe ich eine
Fritzbox 7390 im Einsatz)
Außerdem habe ich das Programm mit den DLLs in ein Netzlaufwerk gelegt
standardmäßig kannst du keine .Net Programme von Netzlaufwerken aus starten. du musst das
Einstellen. Bitte frag nicht wie das geht oder welche einstellungen. ich hatte das mal nur
mitbekommen, aber nicht selbst mit dem problem zu tun gehabt
die ich mit der Maus markiert habe
meinst du markierung auf dem Desktop?
Wenn ja, müsstest du WindowMessages abfangen (die für MausHover und ich mein dass der Desktop
auch Messages sendet wenn etwas markiert wird bin mir aber nicht sicher) und dann weiter vorgehen.
Wofür brauchst du das eigt.?
Guck auch mal hier rein: [erledigt] Ziel einer Verknüpfung auslesen
die nächste idee die ich hätte, wäre die Window Messages abzufangen (speziell die wenn deine Form resized wird) und dann den Button selbst neuzuzeichnen bzw dessen routine anzustoßen. nur nicht vergessen die messages weiterzureichen!
aber das ganze wäre ebenfalls alles andere als gut.
Hallo,
meine Idee wäre, sich das Form.ResizeBegin-Event zu abonnieren Panel.SuspendLayout aufzurufen und dann im Form.ResizeEnd-Event Panel.ResumeLayout aufzurufen.
ist nicht die Beste variante.
ich will ja das die App ohne die dll funktioniert. Dass ist mein Ziel.
Mich würde mal interessieren, warum diese
DLL für Euch so schlimm ist.
Quelle: Dein geposteter Link, Letzter beitrag.
jedenfalls hast du bei pInvoke eine gute Quelle wie man Dllimports realisiert.
Wenn ich nur die erstelle Exe der Anwendung in einen Ordner ziehe wo keine Interop.Shell32.dll liegt
Du kannst auch im Solution Explorer die Datei in dein Projekt hinzufügen und bei den Eigenschaften die Option "Copy to Output Directory" auf "Copy always" setzen.
aber mit dem DllImport zu arbeiten wäre auch meine empfehlung
wenn du schon was veraltetes nutzen willst solltest du auch veraltete verfahren einsetzen 😉
Hier die API-Calls die du dafür brauchst
WritePrivateProfileString "kernel32" Alias "WritePrivateProfileStringA"
GetPrivateProfileString "kernel32" Alias "GetPrivateProfileStringA"
WritePrivateProfileSection "kernel32" Alias "WritePrivateProfileSectionA"
GetPrivateProfileSection "kernel32" Alias "GetPrivateProfileSectionA"
und dazu ein VB6-Beispiel wie das umgesetzt wird
Hallo,
ich behaupte einfach mal dieser Zeilenumbruch ist ein automatischer Zeilenumbruch. Es ist also rein optisch und kein Environment.NewLine (oder auch bekannt als \n)
Hallo,
du kannst mit dynamic arbeiten
dynamic MyChannelConfig = Assembly.CreateInstance("ChannelConfig");
var Results = MyChannelConfig.getChannelList();
besser als mit Invoke-Methoden (Meiner meinung nach)
Hallo,
Hier mal ein Zitat was ein lowlevel hook ist
Zitat von: http://blog.kalmbach-software.de/de/2010/10/14/lowlevel-hooks-sind-bose/
Es gibt auch sog. LowLevel Hooks, welche keine DLL benötigen, sondern im Kontext des Prozesses (Threads) laufen, welche das SetWindowsHookEx aufgerufen hat
Zudem, in meinem ersten Post, habe ich doch geschrieben dass es mit .Net nicht geht einen globalen
Hook zu installieren. Entweder du schreibst das ganze mit einer nativen Sprache (C++) oder
verwendest fertige native Dlls (ich meine hier im Snippet-Bereich des Forums gibt es so eine
Komponente)
ich habe letztens auch ein DataBinding selbst erstellt und musste mich nicht um das
INotifyPropertyChanged-Event kümmern. Du musst bei dem Binding nur drauf achten dass Source
und Path richtig sind, sonst wird das nix mit Binding. Achja, und deine Klasse muss natürlich
INotifyPropertyChanged implementieren und auch das Event feuern.
Hallo,
hast du es schon mit mehreren Elemten versucht?
also
rgums[0] = "A88:G113";
rgums[1] = "A118:G131";
Hallo,
hast du diesen Satz berücksichtigt?
To install a global hook, a hook must have a native dynamic-link library (DLL) export to inject itself in another process that requires a valid, consistent function to call into. This requires a DLL export, which .NET Framework does not support. Managed code has no concept of a consistent value for a function pointer because these function pointers are proxies that are built dynamically.
hier ist ein projekt von CodeProject, dessen dll du nutzen könntest
noch ein hinweis, wenn du die Verbindung aufbauen konntest kann es passieren dass du dich nicht
anmelden kannst, dafür musst du in den Servereinstellungen noch die SQL Server-Anmeldung
einschalten.
Jedoch ist der Kunde von Windoes XP her gewöhnt
dann sag dem kunden doch einfach dass dein Prog nur auf XP maschinen läuft XD
Bei deinem Problem geht es doch darum, zu ermitteln ob sich ein bestimmter rechner (welches
deinen dienst installiert hat) zu ermitteln, richtig? wieso verwendest du nicht bestimmte feste
IP-adressen (kp, ir eine im bereich von x.y.z.128-254, wenn die IP nicht zugewisen werden kann weil
bereits vorhanden, einfach inkrementieren) mit Ports (ein port zum senden, einer zum empfangen)
und schickst dann einfach nachrichten an diesen Adressbereich (mit dem Port halt) und guckst dann
von wo eine Antwort kommt. Müsstest ggf. Router und firewalls konfigurieren. Bei der
Windowsfirewall gibts bestimmmt komponenten/snippets die das automatisch machen.