Wie Du an die Breite der einzelnen Zelle rankommst weisst Du hoffentlich, ist ja auch eine Eigenschaft die zur Entwurfszeit einstellbar ist!
1. Du musst Dir über die Methode CreateGraphics ein Graphics-Objekt
herstellen lassen
2. Dann benutzt Du von dem Grphics-Objekt die Methode MeasureString
Beispiele:
System.Drawing.SizeF sf = g.MeasureString("Hallo Welt!", new Font("Arial",16));
sf.Width;
... .Width = sf.Width; // dann geht sowas hier ... ist die Breite einer Spalte des DataRow ich meine das DataGrid
kürzer geht dann auch sowas
... .Width = g.MeasureString("Hallo Welt!", new Font("Arial",16)).Width; // ... ist wieder Breite der Zellen des DataRow ich meine das DataGrid
Was beleibt nur noch zu sagen, benutze die MeasureString-Methode
innerhalb einer Schleife um erstmal die Daten zu finden die die meiste Breite brauchen und stelle diese am DataGrid ein!
Im übrigen das Font-Objekt hast Du ja schon da deine Anwendung sofern es eine Windowsanwendung ist schon eine Instanz davon hat.
statt
new Font(...,...);
kans´nst Du also gleich
font
oder wie das Ding heisst an MeasurString-Methode übergeben.
mfg sclearscreen
Hi Leute!
Ich erkläre erstmal mein Problem:
Ich versuche (und experimentiere) im Moment mich an einer MDI Oberfläche mit dem DockManager Control (http://codeproject.com/cs/miscctrl/DockManager.asp).
Ich habe in einem Fenster einen Button.
Wenn auf diesen Button geklickt wird, soll ein weiteres Fenster innerhalb des DockManagers hinzugefügt werden und sichtbar sein.
Also würde ich sagen, dass folgendes mein exaktes Problem ist und somit gleich meine Frage:
Wie kann ich auf ein Event eines anderen Fensters (untergeordnet) reagiern?
ODER
Wie kann von einem anderen WinForm aus auf die aktuelle Instanz eines anderen WinForms zugreifen?
In C++(/MFC) würde ich es mit Pointer machen...aber mein Ansatz will nicht funktionieren...
Ich hoffe, dass ich mich gut und verständlich ausgedrückt habe.
Nein, es ist nicht so, als ob ich in diesem Sinne Englisch nicht behersche, aber ich hab auch nix gegen eine deutsche Oberfläche...ich merk doch gar nicht mehr, dass das alles Englisch ist
Naja...schade..hätt gern mal die deutsche Oberfläche mir angeschaut
Also die VisualStyles sind schon aktiviert. Du kannst als Header Renderer den FlatStyle auswählen, aber das hat leider keine Auswirkungen auf die Reihen und Zellen.
Kritiker schrieb:
Anonyme Methoden einen Ansatz zur funktionalen Programmierung bieten sollten, und dass nun doch ganz übernommen wird, 2 Sprachmittel für das selbe Ergebniss (bitte jetzt keine Beispiele ala: Es gibt ja auch for und while Schleifen, sowas spielt meiner Meinung nach in einer anderen Liga ..)
Beide sind miteinander kompatibel, was aber noch lange nicht bedeutet, dass sie gleichwertig sind. Die Lambdas aus C# 3.0 sind mächtiger als die anonymen Delegaten. Sie lassen sich nämlich in ASTs zerlegen. Auch die Rückübersetzung von AST zu Lambda wird wohl möglich sein. (Ist aber leider im Spec nicht genau beschrieben). Daraus resultiert auch die ganze "Magie", die hinter LINQ steckt, um deinen Code z.B. in gleichwertige SQL, XPath Kommandos umzuwandeln. Auch für genetische Programmierung und polymorphe Algorithmen könnte man das nutzen (auch wenn das jetzt zwei eher abgehobene Beispiele sind ).
Kritiker schrieb:
Man doch genau so gut gleich für diese wenigen Klassen eine funktionale Sprache verwenden könnte, wozu gibt es denn F# und Co? Warum eine Universal-Sprache entwickeln, die letztendlich überquillt an Features?
Ich selbst habe überwiegend gute Erfahrungen mit Misch-Sprachen gemacht. Also die imperativ und funktional sind. Nimm Phyton mal einfach als Beispiel, dort funktioniert das wunderbar...
rizi2 schrieb:
noname23 schrieb:
und es gibt keine möglichkeit eine .exe datei (wie in c++) zu machen,
die auf allen rechnern läuft auch ohne .net framework?
mfg
nein,die gibt es nicht, denn die .exe datei wir erst vom jit(just in time kompiler) interpretiert und dazu braucht man das .net framework, ähnlich wie bei java
lg
rizi
Da wird nichts interpretiert, der Zwischencode wird kompiliert in Maschienencode und dann ausgeführt!
Und zur anderen Frage. Nein es geht nicht! Entspricht auch nicht dem Sinn des .Net Frameworks. Es gibt zwar Linker von Dritthertellern die die entsprechenden Dll's mit dazulinken, aber wer sowas versucht hat in der Regel den Sinn eines Frameworks nicht verstanden.
Talla schrieb:
robmir schrieb:
hallo,
1. wie kann ich unter .net c++ ein string in String umwandeln?
Die sind synonym in .Net. "string" ist nur nen Verweiß auf die CLR Klasse "String"
Das ist in C# so, dass "string" ein Alias für "System.String" ist. In VB ist "String" ein Alias für "System.String" und in C++/CLI gibt es glaube ich keines, sondern man muss wie sonst auch den Namen usen oder qualifizieren.
Es gibt System.String-Konstruktoren (http://msdn2.microsoft.com/en-us/library/8s83eyw9(en-US,VS.80).aspx), die ein Byte-Array bei gegebener Kodierung umwandeln können. Man beachte, dass ein C++-char ein Byte ist. Damit ist char[] -> System::String schon mal klar. Die Kodierung von char[] in C++ weiß ich nicht, wovon die abhängt. Bei mir hängt sie davon ab, in welcher Kodierung ich den Quelltext speichere.
std::string kannst du so genauso umwandeln, denn du kannst einen zeiger auf das interne char[] getten.
Hab die Plugins jetzt mit in den Ordner des Hauptprogramms gepackt .. und ... es funktioniert alles super. Danke für den Denkanstoß
Wenn aber noch jemand ne Idee hat, wie ich das auch in verschiedenen Verzeichnissen zum Laufen bekomme, bin ich dafür offen
Danke Leuts.
Greetz :xmas1:
FileListItem **castedItems = new FileListItem*[List->get_Count()];
so siehts glaub ich richtig aus, wenn du ein FileListItem** willst.
ich muss dazu sagen, dass ich das nur aus C++ kenne und von MS Java aus prinzip keine ahnung habe.
xs2007 schrieb:
Nach mehrstündigem aufenthalt in der msdn Library hab ich nun rausgefunden, dass der befehl, den man braucht
e.Cancel = true;
heisst und man ihn nach
this.hide();
schreiben muss.
naja jetz gehts juchu ^^
Das nenn ich einen guten Fragensteller Bin gestern net mehr dazu gekommen die Einzelheiten zu posten, aber die Eigeninitiative sollten mehr Leute zeigen
Hallo!
Ich hab folgendes Problem. Ich habe ein Webbrowser-Control, welches direkt HTML Code anzeigen soll. In diesem HTML Code steckt JavaScript. Wenn ich den Code in eine Datei speichere, und sie normal mit dem dem Internet-Explorer öffne oder mit Mozilla funktioniert der Code. Und wenn ichs mit
axWebBrowser1.Navigate2("...")
mache auch. Nur nicht mit
axWebBrowser.Document.body.innerHTML = HTMLcode
Ich hab mal zum testen folgenden HTML-Code verwendet:
<html>
<head>
<title>jsenabled.htm</title>
<script type="text/javascript">
function js() {
document.getElementById("JS").innerHTML = "JavaScript is enabled!"}
</script>
</head>
<body onload="js()">
<span id="JS">JavaScript is not enabled!</span>
</body>
</html>
Und wenn ichs mit innerHTML mache kommt nur "Javascript is not enabled". Wenn ichs mit Navigate2 mache "JavaScript is enabled!"
woran liegt das?
man muss dazu sagen, dass eine Scripte in der Page aus dem Internet nachgeladen werden müssen.
Vielen Dank
ich habe hier eine einfache lösung anzubieten:
man ruft einfach :
System.Windows.Forms.Application.EnableVisualStyles();
auf, am besten im konstruktor bevor man irgnedetwas anderes macht.
dann kann man wie gewohnt seine CheckBoxen,Progressbars usw. erzeugen.
Dadurch wird veranlasst, dass wenn das xp-style vorhanden ist(ist der fall bei win xp prof/home,win2003) dieses auch zu benutzen.
Allerdings muss man noch das FlatStyle property auf System setzen, dies ist nur für alles was von button abstammt notwendig(Button,CheckBox,RadioButton).
Bsp für Property:
this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
Code-Example:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication2
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.RadioButton radioButton1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.ProgressBar progressBar1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
System.Windows.Forms.Application.EnableVisualStyles();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 10);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(304, 20);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "textBox1";
//
// button1
//
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.button1.Location = new System.Drawing.Point(324, 8);
this.button1.Name = "button1";
this.button1.TabIndex = 1;
this.button1.Text = "button1";
//
// checkBox1
//
this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBox1.Location = new System.Drawing.Point(216, 40);
this.checkBox1.Name = "checkBox1";
this.checkBox1.TabIndex = 2;
this.checkBox1.Text = "checkBox1";
//
// radioButton1
//
this.radioButton1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton1.Location = new System.Drawing.Point(8, 40);
this.radioButton1.Name = "radioButton1";
this.radioButton1.TabIndex = 3;
this.radioButton1.Text = "radioButton1";
//
// comboBox1
//
this.comboBox1.Location = new System.Drawing.Point(8, 70);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(392, 21);
this.comboBox1.TabIndex = 4;
this.comboBox1.Text = "comboBox1";
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(9, 96);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(390, 16);
this.progressBar1.TabIndex = 5;
this.progressBar1.Value = 10;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(408, 118);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.radioButton1);
this.Controls.Add(this.checkBox1);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
}
}
skY! schrieb:
und nun hab ich noch eine frage und zwar, ich bekomms nicht gebacken double in string zu converten ... müsste ja eigtl. so sein:
string s = System.Convert.ToString(double dd);
aber so funzt es nicht, da meint er dass ers nicht converten kann
Du kannst auch einfach schreiben
string s = dd.ToString();
Aber die genauere Fehlermeldung ist immer hilfreicher als einfach nur zu sagen dass es nicht geht.
Gibt es in Microsoft Visual C++ .NET 2003 einen Befehl um enizelnen Pixel an einer bestimmten Position ( auf der Objektoberfläche ) zu "malen"
bräuchte eine Art befehl wie ::pixel(80,40,System::Drawing::Color::AliceBlue);
ich knobel hier schon ca.3 std rum komme dennoch nicht weiter