Hallo
ich habe probleme mit einer Dropdownlist, die in einem Repeater (genauer:FooterTemplate) ist.
Das Problem ist, dass die Dropdownlist nicht aus der Codebehind-datei (.cs) erreichbar ist ("Object reference not set to an instance of an object.")
Wenn ich die Dropdownlist wieder aus dem Repeater entferne und irgenwoanders auf der seite platziere, funktioniert es einwandfrei.
Es sieht so aus, als ob die Controls innerhalb eines Repeaters nicht zur seite gehören.
Was mache ich falsch?
Es muss doch möglich sein eine Dropdownlist in einem FooterTemplate zu nutzen.
schneller ist es, wenn du ein gegrautes Bild hast.
Ansonsten kannst du ja das Bild mit Hilfe von DoubleBuffering und Graphics ausgrauen. Einfach die Farbwerte der Bildpunkte anpassen.
Angel84,
Angel84 schrieb:
wie kann ich denn abfangen wenn der Nutzer auf das Plus zeichen vor einem node klickt
Drück doch mal F1 und schaue Dir die Ereigisse der TreeView-Klasse an ...
Angel84 schrieb:
Ich habe Verweise in dem Treeview. Gibt es die Möglichkeit diese Verweise in dem Treeview zu cachen?
Ich rätsle mal herum und tippe auf die property TreeNode.Tag.
de_Bert schrieb:
Wenn er aber in den beiden Form's abwechselnt arbeiten will kommt es nicht drum herum.
des stimmt so auch net ganz. Zum Beispiel hier: http://www.c-plusplus.net/forum/viewtopic.php?p=441630&highlight=#441630 wird gezeigt wie man mehere Fester gleichzeitig offen haben kann und das eine auf das andere reagiert.
In System.Collections gibt es da wohl nichts. Aber du könntest dir eine Klasse schreiben die eine Hashtable kapselt und einen Indexer implementieren, der dann für einen entsprechenden Key eine ArrayList mit den Values liefert. So würdest du dir zumindest die expliziten Downcasts der normalen Hashtable sparen.
Hi!
So beginnt eine C++.net-Anwendung:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
Application::Run(new Form());
return 0;
}
Ich wüprde daraus schließen das lpCmdLine die Kommandozeilenargumente enthält. Wenn du diese weiter in deinem Programm benutzen willst, kannst du sie ja an den Konstruktor der Klasse übergeben, wodurch der grafische Teil deiner Anwendung gestartet wird. Also an folgender Stelle:
Application::Run(new Form( /* _HIER_ */ ));
Dort kannst du es dann ja durch weitere Klassen oder so weiterbearbeiten lassen.
Code-Hacker
Siehe Noodles.
2 oder mehr Assemblys (Auch exakt mit dem gleichem Namen,Namespace,Klassen) können im GAC installiert werden. Die Configdatei ist da nicht sooo wichtig.
In deinem Fall:
D.dll vom Hersteller A ist im GAC
D.dll vom Hersteller B ist parallel zu D.dll(von A) im GAC.
Anwendung A.exe bezieht sich per Referenz auf D.dll(von Hersteller A!!!)
Anwendung B.exe bezieht sich per Referenz auf D.dll(von Hersteller B!!!)
.Net passt auf, dass sich die Assemblys nicht in die Quere kommen. Das ist ja auch der Sinn der Sache. Man wollte eine weitere dll-Hell unter Windows ausschließen.
Des Rätsels Lösung ist, du musst deinen eigenen Collection-Typ definieren und in der abgeleiteten Klasse die Controls-Property neu definieren. Hier ein kleines Beispiel:
class MyUserControlItem:UserControl
{
}
class MyItemCollection
{
private ArrayList _alItems;
public MyUserControlItem this[int index]
{
get
{
return (MyUserControlItem)_alItems[index];
}
set
{
_alItems[index]=value;
}
}
public MyItemCollection()
{
_alItems=new ArrayList();
}
public void Add(MyUserControlItem item)
{
_alItems.Add(item);
}
}
class MyUserControl:UserControl
{
private MyItemCollection _items;
public new MyItemCollection Controls
{
get
{
return _items;
}
}
public MyUserControl()
{
_items=new MyItemCollection();
}
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
MyUserControl ctrl = new MyUserControl();
ctrl.Controls.Add(new MyUserControlItem());
}
}
hmm, vielleicht hab ich mich schlecht ausgedrueckt. vielleicht ist workflowengine die falsche bezeichnung - neue Begriffe: jobmanagement, worklist, taskmanager, scheduler. Das zielt alles in die Richtung.
Weiss jemand eine Stelle im Netz wo ich Hilfe bekommen koennte? (Forum, Codeansammlung, Diplomarbeit...) Darf auch englischsprachig sein!
Ja geht, mit:
System.Runtime.InteropServices.Marshal.StructureToPtr( ... )
Sollte es zu laufzeitfehler kommen, musst du die Struct exakt nach bilden
d.h. du musst folgendes setzen
[System.Runtime.InteropServices.StructLayout( System.Runtime.InteropServices.LayoutKind.Explicit ) ]
struct test
{
[System.Runtime.InteropServices.FieldOffset(4)]
public int Wert;
}
Nur so läst dotnet deine struct in Ruhe
Wie der interpreter schon angedeutet hat, ist int ein value-Typ und um eine Referenz zu speichern brauchst du einen Referenz-Typ. Daher muss ein Wrapper benutzt werden und auf ref kann man dann verzichten. Zum Beispiel so:
class IntWrapper
{
private int _theValue;
public IntWrapper(int theValue)
{
_theValue=theValue;
}
public static IntWrapper operator ++(IntWrapper i)
{
i._theValue++;
return i;
}
public static implicit operator int(IntWrapper i)
{
return i._theValue;
}
}
class Incrementor
{
private IntWrapper _num;
public Incrementor(IntWrapper num)
{
_num=num;
}
public void Increment()
{
_num++;
}
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
IntWrapper n = new IntWrapper(5);
Incrementor inc = new Incrementor(n);
inc.Increment();
Console.WriteLine(n);
}
}