blurry333 schrieb:
ok da mein namespace Thread heisst koennte natuerlich auch dies das Problem sein
Das Problem bist wohl eher du. Fast 100% der Threads, die du eröffnest, hätte man innerhalb weniger Sekunden mit einer Suchmaschine deiner Wahl oder durch minimale Anwendung kognitiver Fähigkeiten lösen können.
Du solltest wirklich mal einen Arzt aufsuchen und dich auf deine mentale Fähigkeiten prüfen lassen.
Auf Deutsch:
textBox2.Text = textBox1.GetLineFromCharIndex(textBox.TextLength + 1).ToString();
Hier wird in die textBox2 ausgegeben, wieviel Zeilen textBox1 enthält.
Lg Austria88
Hab das Problem gefunden:
xlWorkBook = xlApp.Workbooks.Open(openFileDialog1.FileName.ToString(),
0, true, 1, "", "", true, Excel.XlPlatform.xlWindows,
"\t", false, false, 0, true, 1, 0);
Was eigentlich der ersten Version entspricht, aber diese läuft aus irgend einem Grund nicht.
Tabs als Trenner ok, aber wieso werden diese dann auch bei Custem-Char nicht anerkannt?
MFG
Okay, ich hab das Problem gelöst. War ein dummer Fehler meinerseits.. Ich hab an einer ganz anderen Stelle im Code vergessen, die Daten meines Structs mit den Daten des unmanaged structs auf den der IntPtr zeigte, zu synchronisieren...
Trotzdem danke für die Hilfe
Der DiagramDesginer hat mehr sehr geholfen. Danke nochmal.
Dennoch habe ich jetzt ein anderes Problem.
Meine Mindmap ist ein UserControl. Dieses wird in einem TabControl angezeigt. Es soll möglich sein mehrere Mindmaps gleichzeit zu bearbeiten. Das funktioniert nur nicht ganz so wie ich es mir vorgestellt habe.
Denn ich setzte meine Minds immer auf die selbe Instanz des UserControls?
Die Mindmap vom ersten Tab wird mir auch im zweiten (usw.) angezeigt.
Der Cast im XAML.
Das MindmapTemplate ist vereinfacht für Testzwecke.
<DataTemplate DataType="{x:Type vm:MindmapVM}">
<vw:MindmapView/>
</DataTemplate>
<DataTemplate x:Key="MindmapTemplate">
<DockPanel Width="120">
<Button
Command="{Binding Path=CloseCommand}"
Content="X"
Cursor="Hand"
DockPanel.Dock="Right"
Focusable="False"
FontFamily="Courier"
FontSize="9"
FontWeight="Bold"
Margin="0,1,0,0"
Padding="0"
VerticalContentAlignment="Bottom"
Width="16" Height="16"
/>
<ContentPresenter
Content="{Binding Path=DisplayName}"
VerticalAlignment="Center"
/>
</DockPanel>
</DataTemplate>
Die Bindung an das TabControl
<TabControl Grid.Column="1" Grid.Row="1"
DataContext="{Binding Source={StaticResource ' mainWindowVM'}}"
ItemsSource="{Binding Path=Mindmaps}"
ItemTemplate="{Binding Source={StaticResource MindmapTemplate}}"
IsSynchronizedWithCurrentItem="True"/>
Meine Idee wäre jetzt die Elemente am Canvas zu Löschen und die Mindmap neu zu zeichnen. Gibt es aber vl. einen schöneren Weg?
PS:Behoben. Hab mir nochmal den Snippet von dir angesehen.
Vielleicht weil es explizit implementiert ist?
void IDisposable.Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
@μ
Edit: Und nur deswegen wird es nicht einfach so angezeigt. Das hat auch nichts mit dem using zu tun. Außerdem wird Dispose bei anderen Klassen auch so angezeigt.
Aha. VS 2005 oder was?
http://blog.hagemann.ws/2010/05/07/213/visual-studio-2008-vorhandenes-element-als-link-hinzufugen.html
Ansonsten lager den Code in eine DLL aus.
Hallo,
es gibt auch noch 2 auf reinem Managed-Code aufbauende Klassen zum Manipulieren von Bitmaps:
GetPixel und SetPixel um Längen geschlagen. 800 mal schneller
Bitmap-Manipulation (MemBitmap)
also nachdem ich jetzt erstmal ne kleine Pause machen musste hab cihs mal ausprobiert und stoße auf folgendes Problem
TestDLL.dll
[A]TestDLL.DLLClass kann nicht in [B]TestDLL.DLLClass umgewandelt werden. Der Typ "A" stammt von "TestDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" im Kontext "LoadFrom" am Speicherort "TestDLL.dll".. Der Typ "B" stammt von "TestDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" im Kontext "Default" am Speicherort "TestDLL.dll"..
TestDLL.DLLClass libraryobject = null;
Assembly DLLLink = null;
public bool loadDLL(string path)
{
try
{
DLLLink = Assembly.LoadFrom(path);
Type t = DLLLink.GetType("TestDLL.DLLClass");
libraryobject = (TestDLL.DLLClass)Activator.CreateInstance(t); //<---- hier steigt er aus
return true;
}
catch (Exception e)
{
textBox1.AppendText(e.Message+"\r\n");
}
return false;
}
defakto unterschiedet sich nur der "Kontext", kann ich das irgendwie beheben !?
Der Fehler kommt auch wenn ich die Instanz als object nehme und on demand auf TestDLL.DLLClass caste!
Und dann sorgst Du auch noch dafür, dass es nicht zu Problemen kommt, wenn jemand während der Animation ein zweiten mal auf "Neues Spiel" klickt. Dir fällt bestimmt was dazu ein
Hi!
Hilfreich wären ein paar mehr Informationen...
Machst du den Zugriff mit ADO.NET? Also C# oder was verwendest du. Welche Plattform (Windows, Linux, ...)?
MfG
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Passwort1
{
class Program
{
static void Main(string[] args)
{
string x, u, v, w;
int passworteins, passwortzwei, passwortdrei, passwortvier;
int eingabeeins, eingabezwei, eingabedrei, eingabevier;
int eingabeende, passwortende;
int durchgang = 0;
passworteins = Convert.ToChar('B');
passwortzwei = Convert.ToChar('K');
passwortdrei = Convert.ToChar('F');
passwortvier = Convert.ToChar('T');
passwortende = passworteins + passwortzwei + passwortdrei + passwortvier;
do
{
Console.WriteLine(" Bitte geben sie das Passwort ein ");
x = Console.ReadLine();
u = Console.ReadLine();
v = Console.ReadLine();
w = Console.ReadLine();
eingabeeins = Convert.ToInt32(char.ToUpper(Convert.ToChar(x)));
eingabezwei = Convert.ToInt32(char.ToUpper(Convert.ToChar(u)));
eingabedrei = Convert.ToInt32(char.ToUpper(Convert.ToChar(v)));
eingabevier = Convert.ToInt32(char.ToUpper(Convert.ToChar(w)));
eingabeende = eingabeeins + eingabezwei + eingabedrei + eingabevier;
durchgang++;
}
while (durchgang <= 2 && eingabeende != passwortende);
if(durchgang>2)
Console.WriteLine(" Sie haben zu viele versuche gebraucht");
else Console.WriteLine(" Ihre eingabe ist richtig");
Console.ReadLine();
}
}
}
Es klappt eigentlich...aber wenn der benutzer ddop usw. eingibt zeigt er login richtig....das haengt davon ab weil die werte bkft den wert 423 hat und ddop auch(siehe ascii code)....ich weiss nicht wie man den fehler beseitigen kann.
Also: Mein Fehler war die Reihenfolge. Das ist nicht so aufgefallen, weil die einzelnen Anweisungen in verschiedenen Funktionen auftreten. Aber zusammengefasst stand es vorher so da:
MyForm f = new MyForm();
f.DataGridView.Columns.... // irgendwelche Formatanweisungen.. -> Fehler, da falsche Reihenfolge!!!
f.Show();
Das DataGridView wird offenbar erst mit dem Show-Befehl angelegt. Deshalb ganz klar, kam vorher die Meldung, es gibt keine Objekt-Instanz.
Richtig ist:
MyForm f = new MyForm();
f.Show();
f.DataGridView.Columns.... // irgendwelche Formatanweisungen
Ganz einfach, man muss nur drauf kommen...
micheben schrieb:
ok mit dem letzten satz hab ich mich villt ein wenig falsch ausgedrückt. Ich hab wohl informationen gefunden und auch Googel bemüht aber ich hab in keinem der Links die Antwort auf meine zwei Fragen gefunden. Hast du nur "wpf calendar" in Googel eingegeben oder auch mal den ein oder anderen Link angeklickt :)?
Hoffe es erbarmt sich jemand mir villt auch nur ein schubs in die richtige Richtung zu geben.
Mit freundlichen Grüßen
micheben
Selbst zu deinen beiden gestellten Fragen findest du im Internet ne Lösung.
Hallo,
ich möchte gern mit meiner Click-Once Anwendung eine Textdatei weitergeben.
Diese Textdatei soll bei der Installation in einen bestimmten Ordner kopiert werden.
In den Eigenschaften=>Veröffentlichen=>Anwendungsdateien kann man zwar auswählen welche der Anwendungsdateien veröffentlicht werden sollen, aber es ist nicht möglich einen eigenen Verzeichnis anzugeben.
Danke im Voraus
Es geht um eine Klasse (man nenne sie XYZBuilder, XYZFactory oder was auch immer), die aus einer CSV Datei irgendwelche Instanzen irgendwelcher Klassen erzeugt. Jede Zeile, eine Instanz. Dabei kann der Benutzer zur Laufzeit definieren, welche Spalte der CSV Datei welcher Bedeutung hat. Diese "Regel" kann man dann abspeichern und wieder verwenden.
Das ganze habe ich wie gessagt mit Reflection schon recht einfach gelöst. Dachte es geht viellciht ähnlich einfach auch ohne.
Das ganze sieht dann etwa so aus.
personen.csv
Hans,23,Musterstr. 27
Jürgen,65,Schlossalle 1
class Person
{
public string Name{get;set;}
public string Adresse{get;set;}
}
CSVRule rule = new CSVRule().Property("Name").Ignore().Property("Adresse");
CSVBuilder<Person> builder(rule);
List<Person> personen = builder.Build(new StreamReader("personen.csv"));
class CSVBuilder
{
public List<T> Build(TextReader reader)
{
List<T> result = ...
CSVStream csv = new CSVStream(reader);
while(!csv.EndOfStream)
{
List<string> row = csv.NextRow();
T t = new T();
for(int i = 0; i < rule.Count; ++i)
rule[i].Invoke(t, row[i]);
result.Add(t);
}
return result;
}
}
Irgendwie so.. Was ich tatsächlch geschrieben hab, hab ich grad nicht da, aber so ähnlich.
Man kann natürlich noch irgendwelche Klassen dazuerfinden, oder der Person Klasse statische Methoden verpassen, aber ich wollte es einfach halten und die Person Klasse nicht anpassen müssen.