User Control lokalisierbar machen



  • Guten Morgen,

    Wie mache ich ein UserControl lokalisierbar? Wenn ich ein normales Control benutze (z.B. Label) hat dieses Control z.B. die Text-Eigenschaft, die ich lokalisieren kann.

    Nun habe ich ein UserControl (eine horizontale Linie, realisiert durch ein Label und noch ein Label). Wenn ich das so implementiere:

    public class hLine : UserControl
    {
    	public hLine()
    	{
    		InitializeComponent();
    	}
    
    	string textval;
    
    	public string Textval {
    		get { return textval; }
    		set { 
    			textval = value; 
    			this.theLabel.Text = value;
    		}
    	}
    
    	private System.ComponentModel.IContainer components = null;
    
    	protected override void Dispose(bool disposing)
    	{
    		if (disposing) {
    			if (components != null) {
    				components.Dispose();
    			}
    		}
    		base.Dispose(disposing);
    	}
    
    	private void InitializeComponent()
    	{
    		this.theLine = new System.Windows.Forms.Label();
    		this.theLabel = new System.Windows.Forms.Label();
    		this.SuspendLayout();
    		// 
    		// theLine
    		// 
    		this.theLine.Anchor = Top | Left | Right;
    		this.theLine.BorderStyle = BorderStyle.Fixed3D;
    		this.theLine.Location = new System.Drawing.Point(0, 18);
    		this.theLine.Name = "theLine";
    		this.theLine.Size = new System.Drawing.Size(189, 2);
    		this.theLine.TabIndex = 0;
    		// 
    		// theLabel
    		// 
    		this.theLabel.Anchor = Top | Left | Right;
    		this.theLabel.Location = new System.Drawing.Point(0, 0);
    		this.theLabel.Name = "theLabel";
    		this.theLabel.Size = new System.Drawing.Size(189, 20);
    		this.theLabel.TabIndex = 1;
    		this.theLabel.Text = "label1";
    		// 
    		// hLine
    		// 
    		this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    		this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    		this.Controls.Add(this.theLine);
    		this.Controls.Add(this.theLabel);
    		this.Name = "hLine";
    		this.Size = new System.Drawing.Size(189, 23);
    		this.ResumeLayout(false);
    	}
    	private System.Windows.Forms.Label theLabel;
    	private System.Windows.Forms.Label theLine;
    }
    

    Dann ist die Eigenschaft Textval nicht lokalisierbar. Wie macht man sowas denn richtig?

    Danke



  • 1. Das Propertie Localizable=true des UserControls im Designer setzen. Dann bekommst Du für jede Sprache eine Resourcendatei wie es auch beim Forms der Fall ist.

    oder

    2. Das Attribut [Localizable(true)] für ausgewählte Properties IN dem Usercontrol festlegen. Dann verhält es sich wie Standard-Controls und die Lokalisierung findet in der Resourcendatei des Parent statt, also i.d.R. einer Form.



  • Super, mit dem [Localizable(true)] funktioniert es. Danke dir


Log in to reply