David_pb schrieb:
In deinem Orginalpost stand etwas von DirectCase. Was ein Cast ist, weiß ich...
Ansonsten funktioniert dein Beispiel natürlich (wobei ich lieber is und as verwenden würde). Aber MasterBlaster hatte doch was ganz anderes vor...
Wegen dem DirectCase/t, ich hatte mich verschrieben.
Der Aufgaben/Fragestellung nach, war meine Antwort nach dazu passend. Meine Ansicht, wenn es dem nicht so sein sollte... tjo Pech.
als der microsoft typ bei uns in der firma war um damals WPF vor zu stellen wurde das buch hier:
Windows Presentation Foundation Unleashed | ISBN: 0672328917
von mehereren personen anstandslos empfohlen
am sonsten such einfach bei amazon de nach "WPF" dann findest du mitlerweile mehrere - liest einfach die rezessionen durch
deutsche kenn ich grad nicht
ich persoenlich hab WPF auch komplett offline gelernt - ein buch (welches sag ich nicht q:) und die MSDN (F1 in VS) reicht vollkommen, was WPF mit .NET an geht ist die MSDN richtig gut und vollstaendig
Ich hatte tatsächlich die Klasse 2 mal instanziert und sie dadurch parallel, samt ihren Funktionen und Properties, nebeneinander laufen lassen.
Also denn, trotzdem danke an alle die sich wenigstens kurz darüber den Kopf zerbrochen haben.
this.close()
Hallo Jungs,
ich hab eine DualChannel WCF service geschrieben, an diesem Können sich mehre clients anmelden und daten autauschen. Über das Attribut "PerSession", erzeugt mit der service ja Pro client eine Instanz der Services... ! Wie unterschiede WCF nun intern welche Client (PC) eine funktion aufrufet? wie wird das intern gehandelt? wo stehen die Sessions + Namem?
grüße
Wenn du schon so ein frommer (Schein-)Heiliger bist, dann solltest du dich als Erstes bei deinem Gott darüber beschweren, daß er dich geistig gar so benachteiligt hat.
hi,
das ist zwar ein sehr alter Thread aber versuche trotzdem mal mein Glück;-)
Ich hab nämlich zur Zeit das gleiche Problem
Meine Anwendung,, für mein Handy, fügt Bilder in eine ImageList hinzu. Diese Anwendung funktionierte im Emulator ohne Probleme doch als ich sie auf meinem
Handy ausgeführt hatte, bekam ich eine Exception, genau bei dem Versuch ein weiteres Bild in das ImageList-Obejekt einzufügen.
Also, hab ich versucht herauszubekommen warum die Anwendung im Emu nicht kracht. In meinen Handy konnte ich ungefähr 900 Bilder einfügen und auf den Emu 1400 bis Schluss war. Eigentlich liegt es auf der Hand, dass es wahrscheinlich ein Speicherproblem ist und die Anwendung wahrscheinlich kein weiteren Speicher allokieren kann. Aber als ich in den Taskmanager geschaut hab sah ich, dass die Anwendung nicht wirklich viel Speicher belegt hat, da die Bilder auch nicht sehr groß waren (32x32x32).
Also habe ich versucht minimal Anwendung für C# zu erzeugten, die sich ähnlich verhält. Auch hier tritt diese Exception auf zwar deutlich später als auf den Handy aber dennoch belegt die Anwendung gerade mal 20mb im Speicher. Stellt sich nun nur die Frage was wir beim hinzufügen der Bilder falsch machen. Hier der Beispiel Code :
public Form1()
{
InitializeComponent();
ListViewItem tItem;
listView1.LargeImageList = new ImageList();
listView1.LargeImageList.ImageSize = new Size(32,32);
listView1.SmallImageList = new ImageList();
System.Drawing.Icon tIcon;
tIcon = WindowsFormsApplication1.Properties.Resources.Icon1;
for (int tIdx = 0; tIdx < 3500; tIdx++)
{
try
{
if (tIdx == 2489)
MessageBox.Show("now");
tItem = new ListViewItem("test" + tIdx.ToString());
listView1.LargeImageList.Images.Add(tIcon);
listView1.SmallImageList.Images.Add(tIcon);
tItem.ImageIndex = listView1.LargeImageList.Images.Count - 1;
listView1.Items.Add(tItem);
}
catch (Exception e)
{
MessageBox.Show(e.InnerException.ToString()); ;
}
}
}
hat jemand eine Idee?
Hallo!
Das ganze läuft im CompactFramework, da gibts diese Eigenschaft leider nicht, deswegen hab ich die wohl auch nicht in den Eigenschaften gefunden. Naja, dann muss ich für die PC-Version eine eigene Version schreiben...
Ich habe im Laufe der Übungen für 70-536 einen kleinen Taskmanager erstellt, der auch einen Performance-Counter beinhaltet. Da ich auch mit Netzlaufwerken arbeite ist mir aufgefallen, dass wenn ich das Progrmam von der Netzwerkfestplatte aus starte die Berechtigungen für den Performance-Counter fehlen.
In den 70-536-Unterlagen habe ich bei den Sicherheitsthemen nur gefunden, wie die Berechtigungen für aufgerufene Assemblys verändert werden können, diverse Experimente brachten aber keinen Erfolg; ist es möglich dass das Programm sich selbst die Berechtigung gibt (wenn auch mit einer Warnung vom Framework)?
Ansonsten wäre auch eine Möglichkeit zu überprüfen ob die Berechtigung vorliegt und im anderen Fall den Timer nicht zu starten.
Ein weiteres Problem; ich habe für die Prozessorzeit einen Progress-Bar, der aber verhält sich sehr willkürlich, als sei er zu langsam (geht manchmal hoch wenn der Prozessor eine halbe Sekunde vorher ausgelastet war, dann bleibt er weg usw). Der Timer ist ja nur auf 500 ms eingestellt!
Der Quellcode (ist nicht so lang)
namespace netTaskmanager
{//[PerformanceCounterPermission(System.Security.Permissions.SecurityAction.Assert, CategoryName="Prozessor")]
//[PerformanceCounterPermission(System.Security.Permissions.SecurityAction.RequestMinimum, CategoryName="Prozessor")]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
ListProcesses();
}
private void ListProcesses()
{
listBox1.Items.Clear();
Process[] processes = Process.GetProcesses();
foreach (Process p in processes)
{
StringBuilder s = new StringBuilder();
s.Append(p.ProcessName);
if (!p.Responding)
{
s.Append(" Reagiert nicht");
}
listBox1.Items.Add(s.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
{
Process[] processes = Process.GetProcessesByName(listBox1.SelectedItem.ToString());
foreach (Process p in processes)
{ p.Kill(); }
ListProcesses();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = performanceCounter1.NextValue().ToString();
progressBar1.Value = (int)performanceCounter1.NextValue();
progressBar1.Invalidate();
}
private void button2_Click(object sender, EventArgs e)
{
Process p = Process.Start("explorer");
ListProcesses();
}
private void button3_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("explorer");
foreach (Process p in processes)
{ p.Kill(); }
ListProcesses();
}
private void Aktualisieren_Click(object sender, EventArgs e)
{
ListProcesses();
}
private void button4_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcesses();
foreach (Process p in processes)
{
if (!p.Responding)
{
p.Kill();
}
}
ListProcesses();
}
}
}
wenn deine combobox den zustand readonly hat, merk dir den wert von SelectedIndex. Wenn dann das ereignis SelectedIndexChanged auftritt, setze den index zurück auf den "gemerkten" wert. das gleiche musst du auch für die eigenschaft Text tun, wenn die ComboBox eingabe von beliebigem text erlaubt.
ist vielleicht nicht die eleganteste lösung, hat aber auf jeden fall den gewünschten effekt.
oder du probierst das hier, wobei das nur ne fixe überlegung ist und möglicherweise nicht funktioniert:
// codebeispiel modifiziert von David_pb
public class ComboBoxEx : ComboBox
{
private bool mReadOnly;
[DefaultValue( false )]
public bool ReadOnly
{
get { return mReadOnly; }
set { mReadOnly = value; }
}
protected override void OnDropDown(EventArgs e)
{
base.OnDropDown(e);
if ( ReadOnly )
RecreateHandle();
}
protected override void OnKeyDown(EventArgs e)
{
if ( ReadOnly )
return;
base.OnKeyDown(e);
}
// evtl. muss man hier auf gleiche weise noch andere key-events überschreiben
}
So sollte es gehen:
//Auf Klassen oder Namespaceebene:
public delegate int MyAction(int a);
//Verwendung:
MyAction b = new MyAction(delegate(int a){return a+a;});
Wenn du weißt, dass es geht musst du nur in der MSDN suchen ...!
Aber wozu LINQ bemühen, wenn es auch mit "Bordmitteln" geht? Spatzen, Kanonen und so ...
Danke, hab die 2. Variante genommen und die Daten mittels DataRow.ItemArray kopiert:
tblPositionen.Rows.Add(row.ItemArray);
So hat es dann funktioniert
die sql abfrage sollte eigendlich wie ne art funktion mit parametern aufgerufen werden aber hab jetzt den fehler entdeckt im dataset habe ich die Insert abfrage falsch generiert