wie wärs mit zwei splitcontainer, wobei der zweite in dem ersten liegt?
@dass: DataGridView != DataGrid !!!
@MarkusPehn: die einfachste möglichkeit ist wohl, in DataGrid.Paint die entsprechenden zellen selbst zu zeichnen
doch das geht. du muss bloß bedenken, dass wenn ein fenster unter deiner zeichnung aktualisiert wird, wird deine zeichung an der stelle "gelöscht" wird. so muss du deine zeichung regelmäßig aktualisieren.
das bsp. unten zeichnet in einer schleife ein rotes Rechteck auf desktop:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
IntPtr hdc = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(hdc);
while (!Console.KeyAvailable)
{
g.FillRectangle(Brushes.Red, new Rectangle(100, 100, 200, 200));
System.Threading.Thread.Sleep(50);
}
g.Dispose();
ReleaseDC(IntPtr.Zero, hdc);
}
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
}
wie gesagt mit gdi, also winapi. mit GetDC(0) holst du den device context des desktops. mit Graphics.FromHdc() erstellst du ein Graphics-Object mit dem du dann zeichnen kannst.
vorschlag: dein fenter bleibt weiterhin trasparent und du zeichnest dein zeug direkt auf desktop (mittels GDI).
wozu brauchst du eigentlich überhaupt ein fenster?
Dem Bild nach, welches du angehängt hast, dachte ich, dass du das Output-Fenster mit dem "Error List"-Fenster verwechselst. Deshalb habe ich noch mal darauf hingewiesen. Mehr wollte ich damit nicht bezwecken.
Ich mach immer eine neue Datei dafür. In die Datei kommt dann die Definition für Delegate und EventArs-Klasse rein
Original von Pedro_15...
Jetzt habe ich gelesen, das Events eigentlich zwei Parameter (object source, EventArgs args) haben. So das alle Events den selben aufbau haben.
es ist zwar bei .NET so üblich, aber nicht zwingend. du kannst events mit drei oder 20 parametern bauen mit einem rükgabewert, oder ohne, etc.
using System;
class Program
{
static void Main(string[] args)
{
Class c = new Class();
c.Upssss += new DelegateMitDreiParameterUndReturn(OnUpssss);
c.Fire();
Console.Read();
}
static string OnUpssss(int i, string s, bool b)
{
return string.Format("{0} {1} {2}", i, s, b);
}
}
delegate string DelegateMitDreiParameterUndReturn(int i, string s, bool b);
class Class
{
public event DelegateMitDreiParameterUndReturn Upssss;
public void Fire()
{
if (Upssss != null)
Console.WriteLine(Upssss(10, "Test", false));
}
}
Express Editions kann man nicht durch Add-Ins erweitern. aber wenn du zum Thema Installer unter "Infrastruktur" suchst, findest du anze Menge Tipps und Vorschläge dazu.
@Stube: übersehe ich was, oder steht es wirklich irgendwo, dass es sich um ASP handelt?
@Maddinel: wenn es doch nicht asp ist ==> selbst zeichnen
Kleiner Tipp:
Standardmäßig werden die letzten 50 Anmeldungen angezeigt. Um Alle Mitglieder anzuzeigen, klickt man auf "Show rest of members" unten in der Liste der Users. S. Bild.
Original von Noodles
Die steht im **Output **vom VS.
...The last number, 2, indicates the revision of the build...
das erklärt natürlich einiges.
wobei die Wikipedia Versionierung mir persönlich besser gefällt 🙂
Original von herbivore
Hallo Xqgene,die Nummern sind nach dem Umfang der Änderungen streng monoton fallend geordnet:
Hauptversionsnummer = alles neu
Nebenversionsnummer = neue Features inkl. Fehlerbehebungen
Revisionsnummer = nur Fehlerbehebungen
Buildnummer = ggf gar nichts neu, sondern einfach nur neu übersetztDie andere Interpretation wäre: die Nummern sind danach, wie häufig sie sich ändern streng monoton steigend geordnet.
herbivore
genau deshalb wundert es mich, dass in MS .net-Version die Buildnummer vor der Revisionsnummer steht.
Wikipedia schrieb:
Eine Versionsnummer setzt sich häufig wie folgt zusammen:
**:::{style="color: darkred;"}Hauptversionsnummer){darkred}.:::{style="color: darkblue;"}Nebenversionsnummer){darkblue}.:::{style="color: green;"}Revisionsnummer){green}-:::{style="color: gray;"}Buildnummer ){gray}**
nun ich habe mich schon immer gfragt, warum in .net die Revisionsnummer an letzter Stelle steht?
**Hauptversionsnummer.Nebenversionsnummer.Buildnummer.Revisionsnummer **
Original von herbivore
Hallo Stube,du solltest erstmal ein Buch lesen. Ist ein gut und ernst gemeinter Rat. Zumal du das Forum heute schon gut beschäftigt hast.
herbivore
dem schließe ich mich an. und möchte dich außerdem auf die Forumsuche aufmerksam machen. du wirst überrascht sein, was alles bereits hier gepostet wurde. auch zum Taschenrechner.
wer sucht, der findet: Ordnung schaffen im Applikationsordner ?
ich kenne den Fehelr aus der AddIn Programmierung. Ich nenne die DLL einfach um, und dann geht es wieder. Irgendwann spähter wird diese umbennante dll gelöscht.
2002 setzt noch auf das .NET Framework 1.0 und dort sind einige Komponente nicht drin, die in .NET 1.1 (VS2003) oder 2.0 (VS2005) vorhanden sind.
du kannst aber mit WinApi die fehlende Funktionalität nachbilden: http://www.pinvoke.net/default.aspx/shell32/SHBrowseForFolder.html
gibt es denn nicht genug beispiele in dem link?
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
er kennt diese Komponente einfach nicht
was heiß das genasu? fehlermeldung bitte.
einizes was mir noch jetzt in Sinn kommt, dass du nich VS2003 sondern VS.NET (2002) hast.
Hi,
schon was von Configuration Files gehört? 😉
guckt dort mal speziell das <configuration> Element und dann "Runtime Settings Schema"
Original von Schimki86
...Aber eine Folder Browser-Komponente wie in VC# 2005 habe ich nicht finden können
die Komponente gibt es bei VS2003 auch und heißt FolderBrowserDialog.
und wenn du diese doch nicht findest, dann schreibe den Code doch selbst.
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() == ....
wenn ich dich jetzt richtig verstanden habe, du willst auf ein button klicken dann öffnet sich ein Fenster, wo man ein Wert auswählen kann ==> UITypeEditor-Klasse
oder als Combobox ==> Suche im Forum nach GetStandardValues
zu 1. diese Komponenten gibt es bei VS2003 auch. Nur nicht standardmäßig in der ToolBox. also muss du diese selbst einfügen. Einfach mit rechter Maustaste auf die ToolBox klicken und dann Item einfügen o.ä.
zu 2. im Internet, in einer Bücherei, bei Amazon, in der Schule,... ???
erweitere deine Stringklasse um TypeConverter(typeof(ExpandableObjectConverter)) Attribut. damit kann man die Klasse im PropertyGrid aufklappen und einzelne Eigenachaften editieren.
und füge noch zu deiner Property in dem UserControl das DesignerSerializationVisibility(DesignerSerializationVisibility.Content) Attribut damit die vom Designer editierte Werte auch im Source abgelegt werden.
Beispiel:
public partial class UserControl1 : UserControl
{
private Stringklasse strClass;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public Stringklasse StrClass
{
get { return strClass; }
}
public UserControl1()
{
strClass = new Stringklasse(); // NICHT VERGESSEN ZU ERZEUGEN :)
InitializeComponent();
}
}
[Serializable, TypeConverter(typeof(ExpandableObjectConverter))]
public class Stringklasse
{
private string myVar1;
public string MyProperty1
{
get { return myVar1; }
set { myVar1 = value; }
}
private string myVar2;
public string MyProperty2
{
get { return myVar2; }
set { myVar2 = value; }
}
}
du gehst die Sache etwas falsch an. überschreibe die Funktionen GetFormattedValue() und ParseFormattedValue(). die erste soll aus deinem Enum ein String erzeugen und zurück geben. die zweite umgekehrt aus einem String ein Enum.
also, das muss du dir schon einen eigenen designer schreiben.
ein gutes bsp. wäre da - der SplitContainer Control.
ich verstehe erlich gesagt nicht mehr, was die sache ist. wenn form verschoben ist, wird sie geleert. ist doch das was du wolltest. oder nicht?
das zweite geht, denk ich, auch, wenn du WinProc überschreibst.
Programm verankern wenn es sich wirklich wie taskbar verhalten soll
die Methode ist aus irgendeinem Grund mit Attributen Browsable(false) und EditorBrowsable(EditorBrowsableState.Never) markiert. So wird die nicht durch Intellisense angezeigt. Verwenden kannst du diese aber weiterhin. du hast bestimmt einen Schreibfehler drin. Kopiere am einfachsten den Methodennamen aus der Hilfe.
Original von liberado
im Visual Studio 2005 gibt es ein Toolbaustein der aussieht wie ein Telefon...
hat er auch einen namen?
wenn das so ist, wie herbivore schreibt, dann könnte man im LocationChanged das Gezeichnete wieder löschen
private void Form1_LocationChanged(object sender, EventArgs e)
{
using (Graphics g = CreateGraphics())
{
g.Clear(this.BackColor);
}
}
Was hat das bitte schön mit GUI-Technologien zu tun????? Verschoben.
schau dir mal Microsoft.CSharp-Namespace an
[EDIT] 8o zu späht 🙂 [/EDIT]
gucke doch mal die Methoden von ToolStripItemCollection in der Doku genau an.
ah ja...warum man KeyPreview = true braucht habe ich auch nicht ganz verstanden? geht auch ohne.
@nic4x4
ich würde deine InputBox noch um ein paar statische Methoden erweitern. dan würde es etwa so aussehen:
public partial class InputBox : Form
{
private InputBox(string caption, string description, string defaultValue)
{
InitializeComponent();
this.Text = caption;
this.lblDescription.Text = description;
this.txtInput.Text = defaultValue;
}
public static DialogResult ShowDialog(ref string inputValue)
{
return ShowDialog("Geben Sie hier einen Wert ein:", ref inputValue);
}
public static DialogResult ShowDialog(string description, ref string inputValue)
{
return ShowDialog(Application.ProductName, description, ref inputValue);
}
public static DialogResult ShowDialog(string caption, string description, ref string inputValue)
{
DialogResult res;
using (InputBox frm = new InputBox(caption, description, inputValue))
{
res = frm.ShowDialog();
if (res == DialogResult.OK)
inputValue = frm.txtInput.Text;
}
return res;
}
}
und aufgerufen kann es dan z.b. so:
private void button1_Click(object sender, EventArgs e)
{
string value = "Ein Wert";
if (InputBox.ShowDialog(ref value) == DialogResult.OK)
MessageBox.Show(value);
}
so ähnlich wird es in Delphi oder auch VB gemacht. und ich finde es ist besser so für so eine einfache aufgabe.
hm...überprüfen kann ich das nicht, da in meiner Umgebung keine Win2k mehr gibt 8)
aber ich glaube, das kann unser Freund Jrotten auch selbst mal testen.
genau das meine ich. und zwar bevor die MessageBox angezeigt wird 🙂
laut der Doku soll gehen:
Platforms
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
oder du installiert SP4 für Windows 2000
du als ehemaliger Admin weiß doch ganz bestimmt, wie man Windows XP installiert?! 😁
aber im ernst jetzt, ich glaube bei codeproject mal eine selbstgebastelte ListView gesehen zu haben, die auch Groups unterstützt, ob die bei Win2000 auch funktioniert weiß ich allerdings nicht.
zeig doch mal etwas code, sonst kann ich noch lange raten, wo das problem bei dir liegt...
dann caste es zu dem control, was du brauchst..