Jag skriver en nyckel till registret, om tooltips skall visas eller ej. testa att sätt tooltip1.Active=false; det borde stänga av tooltipen... Jag hittad denna snutt, men jag kan inte översätta den till C#. Tack, jag skall genast undersöka detta. Jag vet inte riktigt varför det falerar för dig men här är tt litet exempel på hur man kan få det att fungera... Johan Bovin. Så som jag har fattat det kan du inte ändra språket på redan skapade kontroller och formulr, dvs om du skapar ett formulär under en Culture och du ändrar UICulture kommer det inte slå igenom på den kontrollen utan den måste skapas om. JAg hoppas att det var detta du var ute och fiskade efter. Annars testa att starta en ny tråd med lite mer specifiecerad titel så kanske någon annan kan hjälpa till oxå... Tack i alla fall.Uppdatera formulär!
Jag läser sedan av, och den biten fungerar perfekt:
<code>
string kolla = Music_Translate.Util.readReg("Tooltips");
if(kolla=="ja")
{
checkBox1.Checked=true;
}
else
{
toolTip1.Dispose();
Application.DoEvents();
this.Update();
}
</code>
Vad jag skulle vilja är att "händelsen" skulle verka med en gång. Som det nu är, så måste jag gå ur
min form och sedan tillbaka igen för att det skall fungera. Hur fixar jag det?Sv: Uppdatera formulär!
Sv: Uppdatera formulär!
<code>
Dim frm2 As New Form2()
Me.AddOwnedForm(frm2)
frm2.Show()
'/// then to access frmMain from your second form .....
Dim FM As frmMain = DirectCast(Me.Owner,frmMain) '/// cast it as your second form's owner , NOT as New.
If GetSetting(ProgramName, "Preferences", "ToolTip") = "Yes" Then
FM.ToolTip1.Active = True
Else
FM.ToolTip1.Active = False
End If
</code>
Någon?Sv:Uppdatera formulär!
Form2 frm2 = new Form2();
this.AddOwnedForm(frm2);
frm2.Show();
frmMain FM = ((frmMain)this.Owner);
if (GetSetting(ProgramName, "Preferences", "ToolTip") == "Yes")
{
FM.ToolTip1.Active = true;
}
else
{
FM.ToolTip1.Active = false;
}
Men den är ju också inne på Active=true|false;
För att översätta kan du använda http://www.developerfusion.com/utilities/convertvbtocsharp.aspx
Sv: Uppdatera formulär!
[REDIGERAT]
Tyvärr Johan, jag fick problem med det.
Kanske jag gjorde fel. Jag kallar alltså upp mitt formulär Inställningar ifrån Form1, och jag la denna formen i Inställningar. Kanske det var felet? Sv:Uppdatera formulär!
Form1:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication1
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.ToolTip toolTip1;
public System.Windows.Forms.ToolTip ToolTip1
{
get{return toolTip1;}
set{toolTip1=value;}
}
private System.ComponentModel.IContainer components;
public Form1()
{
InitializeComponent();
}
/// <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.components = new System.ComponentModel.Container();
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(88, 88);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.toolTip1.SetToolTip(this.button1, "Min knapp");
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(80, 32);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
this.toolTip1.SetToolTip(this.textBox1, "min ruta");
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm2 = new Form2();
this.AddOwnedForm(frm2);
frm2.Show();
}
}
}
Form2:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication1
{
/// <summary>
/// Summary description for Form2.
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private System.Windows.Forms.CheckBox checkBox1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form2()
{
InitializeComponent();
}
/// <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.checkBox1 = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// checkBox1
//
this.checkBox1.Checked = true;
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBox1.Location = new System.Drawing.Point(88, 40);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(128, 24);
this.checkBox1.TabIndex = 2;
this.checkBox1.Text = "Visa tooltip";
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
//
// Form2
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.checkBox1);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);
}
#endregion
private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
{
if(this.Owner is Form1)((Form1)this.Owner).ToolTip1.Active=checkBox1.Checked;
}
}
}
Sv: Uppdatera formulär!
Tack för att du har taget dig tid att hjälpa mig.
Som jag ser det så har jag bara ett problem kvar, men desto retfullare.
I mitt program så har jag lagt till Serialization för att få flerspråkighet. Det fungerar väldigt bra. I min form2(Installningar) så skriver jag till registret och när jag startar om programmet så får jag det valda språket, men finns det inget sätt att göra så att när jag stänger Inställningar så får jag rätt språk.
I skrivandes stund, så har jag kommit så långt, att jag öppna inställningar, väljer språk (och om tooltips skall visas). När jag sedan stänger den formen, så har detta sparats till registret. Det lustiga är, att om jag öppnar Inställningar en gång till, då ändras språket!!!.
using System.Xml.Serialization;
using System.Globalization;
using System.Threading;
using System.Resources;
//osv
[XmlRoot("TestDataXml")]
public class TestData
{
private int _Identity = 0;
private string _Name = "";
[XmlElement("Country")]
public string Name
{
get { return this._Name; }
set { this._Name = value; }
}
//********************
private string _Nytt_Country = "";
[XmlElement("Nytt_Country")]
public string Nytt_Country
{
get { return this._Nytt_Country; }
set { this._Nytt_Country = value; }
}
public TestData()
{
}
}
TestData obj = new TestData();
StreamReader reader = new StreamReader(filenamexml);
XmlSerializer serializer = new XmlSerializer(typeof(TestData));
obj = (TestData)serializer.Deserialize(reader);
System.Threading.Thread.CurrentThread.CurrentUICulture= new System.Globalization.CultureInfo(obj.Nytt_Country);
reader.Close();
//osv
if(radioButton1.Checked==true)
{
varde = "sv";
}
else if(radioButton2.Checked==true)
{
varde = "en";
}
var = "Language";
Music_Translate.Util.insertReg(var,varde);
switch(varde)
{
case "sv":
country ="sv-SE";
break;
case "en":
country ="en-US";
break;
}
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(country);
//osv
TestData obj = new TestData();
obj.Name = "Country";
obj.Nytt_Country = country;
XmlSerializer serializer = new XmlSerializer(obj.GetType());
Stream stream = new FileStream(filenamexml, FileMode.Create,FileAccess.Write, FileShare.None);
serializer.Serialize(stream, obj);
stream.Close();
Jag har försökt med att göra en public class i Form1 som får med sig värdet av country, men det resultera
bara att Form1 starta om.
Går det att fixa även detta?
Sv:Uppdatera formulär!
Sv: Uppdatera formulär!
Nu är det löst...
<code>
Music_Translate.Installningar Inst = new Installningar();
this.AddOwnedForm(Inst);
Inst.ShowDialog();
SelectLanguage();
</code>
Den sista classen läser av språket igen.
Tack alla ni som har försökt att hjälpa mig.