天道酬勤,学无止境

C# 如何从另一种形式更改标签文本(C# How do i change a label text from another form)

问题

所以我有2个表格。

表格 1 是我的主要表格,表格 2 是我在文本框中输入文本以显示在表格 1 上的标签上的地方。此外,“确认”和实际更改我的标签输入文本的按钮位于表格 2 上,它需要保持这种状态。

出于某种原因,这不起作用。

表单 2 有一个文本框和一个按钮,当我按下按钮时,它会更改指定字符串的字符串值。
此字符串链接到表单 1 上的标签。字符串正在更改,因此这不是问题,我通过添加一个按钮来确认这一点,该按钮会弹出一个显示新字符串值的消息框。

在寻找答案时,我发现这一定是某种令人耳目一新的问题,我尝试了很多方法都没有成功。 只有那些将我的按钮放在表格 1 而不是表格 2 上的方法才有效。

我一直在谷歌上搜索了 3 个小时以了解如何解决这个问题,但方法要么不起作用,要么他们将我的按钮从表单 2 更改为我的主表单(表单 1)。

请不要说我懒惰我真的找不到有效的方法!

编辑:

代码

GameScreen.cs

namespace _2pGame
{   
    public partial class GameScreen : Form
    {     
        public  GameScreen()
        {
            InitializeComponent();

            P1NameLabel.Text = gm.P1Name;
            P1ClassLabel.Text = gm.P1Class;
            P2NameLabel.Text = gm.P2Name;
            P2ClassLabel.Text = gm.P2Class;                
        }       

        private void PlayerInfoButton_Click(object sender, EventArgs e)
        {
            PlayerInfo playerinfoload = new PlayerInfo();
            playerinfoload.Show();
        }
   }    

}

玩家信息.cs

namespace _2pGame 
{       
    public partial class PlayerInfo : Form 
    { 
        public PlayerInfo() 
        {
            InitializeComponent();        
        }

        public void ConfirmPlayerInfo_Click(object sender, EventArgs e)
        {
            gm.P1Class = P1ClassChoice.Text;
            gm.P1Name = P1TextBox.Text;
            gm.P2Class = P2ClassChoice.Text;
            gm.P2Name = P2TextBox.Text;                     
        }   
    }
}

参考资料

namespace _2pGame
{    
    public partial class gm
    {        
        public static string 
        P1Class,
        P2Class,
        P1Name,
        P2Name;        
    }
}
回答1

解决这种众所周知的情况的一种方法是通过代表......

在您的 PlayerInfo 表单中声明

public partial class PlayerInfo : Form 
{ 
    // define the delegate type (a parameterless method that returns nothing)
    public delegate void OnConfirmPlayer();

    // declare a public variable of that delegate type
    public OnConfirmPlayer PlayerConfirmed;

    .....

    public void ConfirmPlayerInfo_Click(object sender, EventArgs e)
    {
        gm.P1Class = P1ClassChoice.Text;
        gm.P1Name = P1TextBox.Text;
        gm.P2Class = P2ClassChoice.Text;
        gm.P2Name = P2TextBox.Text;

        // Check is someone is interested to be informed of this change
        // If someone assign a value to the public delegate variable then
        // you have to call that method to let the subscriber know 
        if (PlayerConfirmed != null) 
            PlayerConfirmed();
    }
}

然后在您的 GameScreen 表单中,就在显示 PlayerInfo 表单之前,将公共PlayerInfo.PlayerConfirmed设置为 GameScreen 表单类中的方法

private void PlayerInfoButton_Click(object sender, EventArgs e)
{
    PlayerInfo playerinfoload = new PlayerInfo();

    // Subscribe to the notification from PlayerInfo instance
    playerinfoload.PlayerConfirmed += PlayerHasBeenConfirmed;

    playerinfoload.Show();
}

// Method that receives the notification from PlayerInfo 
private void PlayerHasBeenConfirmed()
{
     P1NameLabel.Text = gm.P1Name;
     P1ClassLabel.Text = gm.P1Class;
     P2NameLabel.Text = gm.P2Name;
     P2ClassLabel.Text = gm.P2Class; 
}

这种方法的优点是避免了 GameScreen 和 PlayerInfo 之间的耦合。 无需在 PlayerInfo 中知道 GameScreen 窗体的存在及其属性的名称。 您只需发布一个委托,订阅者可以注册该委托以了解更改,并让订阅者按照自己的代码进行操作。

回答2

您需要引用主表单并在每次需要更新时分配文本框值。

public partial class PlayerInfo : Form 
{ 
    private readonly GameScreen _main;

    public PlayerInfo(GameScreen main) 
    {
        _main = main;
        InitializeComponent();        
     }

    public void ConfirmPlayerInfo_Click(object sender, EventArgs e)
    {
        gm.P1Class = P1ClassChoice.Text;
        gm.P1Name = P1TextBox.Text;
        gm.P2Class = P2ClassChoice.Text;
        gm.P2Name = P2TextBox.Text;

        main.P1NameLabel.Text = gm.P1Name;
        main.P1ClassLabel.Text = gm.P1Class;
        main.P2NameLabel.Text = gm.P2Name;
        main.P2ClassLabel.Text = gm.P2Class;  

    }
}

创建 PlayerInfo 表单时还需要传递引用

private void PlayerInfoButton_Click(object sender, EventArgs e)
    {
        PlayerInfo playerinfoload = new PlayerInfo(this); //pass ref to self
        playerinfoload.Show();
    }

请注意,还有其他更好的方法可以做到这一点,但这是我能想到的最简单的方法。 如果您想要更好的东西,您可以查看事件或中介模式。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • C#在另一个类中使用winform控件(C# using winform controls in another class)
    问题 我有一个 WinForm 应用程序。 在主窗体上有许多控件,例如标签、文本框等。 如果我在同一个程序集中有另一个类,我如何访问这些控件? 例如,从我的新课程中,我想更新 Form1 中的标签? 回答1 在标签(或任何控件)的属性中,将“修饰符”选项设置为“公共” 现在您可以从 Form 的对象访问标签 Form1 f = new Form1() f.lblMyLabel.Text = "My Text" 回答2 选择要从另一个类/表单访问的控件。 转到其属性并将其修饰符值设置为“内部”(如果您只想在同一个程序集中使用它)。 现在在同一个程序集中你想使用它的地方只需创建一个该形式的对象,如 myForm objform = new myForm(); objform.txtName.Text="any text"; 然后您可以使用 objform.show(); 显示该表单; 或 objform.showdialog(); 但我认为这不会解决您的问题,因为我觉得您的表单已经显示在屏幕上,并且您想从另一个表单/类更改其标签/文本框的值,因此为此您必须采用当前的表单对象否则它不会显示当前显示表单的任何更改。 所以我认为单例模式会给你完美的解决方案。 只需创建类并在该类中创建该形式的静态对象,然后创建一个静态函数并检查对象是否已经初始化,不初始化它并使用现有的否则初始化它。
  • 如何更改另一个类的标签? c#windows窗体visual studio(How to change a label from another class? c# windows forms visual studio)
    问题 我知道有很多线程在谈论这个,相信我我已经看到了所有线程,但我认为我有点慢,无法弄清楚如何做到这一点,所以这就是事情! 我有一个表格 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button4_Click(object sender, EventArgs e) { adi mYadi= new adi(); adi.paso(); } private void Form1_Load(object sender, EventArgs e) { } public void l8u(string l ) { label8.Text = l; } } l8u方法应该更改label8的文本,因此它不能是静态的,因为label8不是静态的(是公共的),而我还有另一个类 public class adi :instrucion { private int paso; private int registroD; private int registroO; private int valor; private int vsin; public adi() { paso = 1; } public void setRD(int i){ registroD =
  • 如何将文本框的值从一种形式传递到另一种形式(How to pass value of a textbox from one form to another form)
    问题 如果我将一个值存储到 form1 的文本框中,并且我必须将该值传递到另一个 form2 的另一个文本框中。 将值从一种形式传递到另一种形式的方法是什么? 回答1 有一个没有。 的方式。 1.使用TextChanged事件。 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Form2.TextBox1.Text = TextBox1.Text End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Form2.Show() End Sub 使用Click事件: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Form2.TextBox1.Text = TextBox1.Text End Sub 使用LostFocus事件: Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
  • 从另一个类文件访问 MainForm(Accessing MainForm from another class file)
    问题 我有这个 MainForm 类: namespace homework_001{ public partial class MainForm : Form { public MainForm() {InitializeComponent();} public string Change { get{ return label.Text;} set{ label.Text = value;} } void ButtonClick(object sender, EventArgs e) { Test a = new Test(); a.changer(); } }} 我有这门课: namespace homework_001{ public class Test { private MainForm form = new MainForm (); public void changer(){ form.Change = "qqqqq!"; } }} 所需的工作流程是在按下按钮时更改标签/文本。 它编译,但按下按钮后没有任何反应。 可能是什么问题? 回答1 发生的情况是您显示的表单与Test类中的表单不同。 为了使事情工作,您应该以这种方式将表单传递给类Test : public class Test { private MainForm form; public Test
  • 在C#中以另一种形式更改标签的文本?(Changing a label's text in another form in C#?)
    问题 我有一个名为LabelX1的标签。 这是在form2上。 在form1上,我有一个按钮。 我希望将按钮的文本转移到其他表单的标签上。 我试过了 form2 frm2 = new form2(); frm2.labelX1.Text = this.button1.text; 但这是行不通的。 有一种简单,直接的方法吗? 回答1 您需要公开标签或其属性。 在表格2中: public string LabelText { get { return this.labelX1.Text; } set { this.labelX1.Text = value; } } 然后,您可以执行以下操作: form2 frm2 = new form2(); frm2.LabelText = this.button1.text; 回答2 您可以像这样修改Form2的构造函数: public Form2(string labelText) { InitializeComponent(); this.labelX1.Text = labelText; } 然后创建传递文本的Form2: Form2 frm2 = new Form2(this.button1.text); 回答3 在form2里面写这个 public void ChangeLabel(string s) { labelX1.Text = s
  • 多种形式一个Windows C#可能还是只有面板/用户控件?(Multiple forms one windows C# possible or only panels/usercontrol?)
    问题 因此,这是我的问题,我是C#的新手(正在教我自己)这是东西,我正在开发基本的SIM卡游戏,没什么复杂的,但我已经完成了设计和基本功能。 但是,为了实现它,我目前正在使用多个Forms(Visual Studio 2013),我的“主”表单具有“操作”按钮 因此,当我想转到用户个人资料页面时, Btn_profileview Click(object sender, EventArgs e){ Form profile = new Form(); profile.Show(); } 然后,用户将实现写入到文本文件中的更改(例如更改名称),以在程序的其他区域中使用。 但是,它打开了一个新窗口,我尝试了模态和非模态窗口,而Modal的好处是它们必须实际关闭窗口才能解决问题,我宁愿它只是覆盖先前存在的Form,然后再关闭返回“主”屏幕,而无需实际使用多个窗口。 现在,我被告知UserControl和/或Panel将解决此问题,但是这将导致从多个表单到多个面板屏幕的完全重新设计,并弄清楚如何使它们工作(可见和不可见),我假设沿着Panel“ name” .show()的路线并不是一件非常困难的事情。 和面板“名称” .close(); 但是是否可以在预先存在的代码中实际添加一行代码(以免引起完整的重新签名),或者Panels和UserControl是唯一在1个连续窗口内实现的真正方法?
  • 异步任务中的 C# 更改标签文本(C# in Async Task change Label Text)
    问题 以下代码不会更改文本并停止执行任务 private void button1_Click(object sender, EventArgs e) { label1.Text = "Test"; Task.Run(() => MyAsyncMethod()); } public async Task MyAsyncMethod() { label1.Text = ""; //everything from here on will not be executed } 如果您可以将 async 与 UI 一起使用,那将非常方便 回答1 为了通过您需要调用的第二个线程访问 GUI 控件。 以下示例显示了如何正确设置标签的文本 private void setLabel1TextSafe(string txt) { if(label1.InvokeRequired) label1.Invoke(new Action(() => label1.Text = txt)); else label1.Text = txt; } 我希望这能解决你的问题 回答2 如果您可以将 async 与 UI 一起使用,那将非常方便 async的设计经过精心设计,因此您可以在 UI 中自然地使用它。 在我的代码中,我运行了一个执行大量 IO 和需要很长时间的东西的函数 如果您有异步 I/O 方法
  • C#从另一个线程调用form.show()(C# calling form.show() from another thread)
    问题 如果我从另一个线程在WinForms对象上调用form.show() ,则该表单将引发异常。 我可以在哪里以任何方式向主应用线程添加新的可见表单? 否则,如何在不停止当前正在执行的线程的情况下打开表单? 这是我的示例代码。 我试图启动一个线程,然后在该线程中执行一些工作。 随着工作的进行,我将显示表格。 public void Main() { new Thread(new ThreadStart(showForm)).Start(); // Rest of main thread goes here... } public void showForm() { // Do some work here. myForm form = new myForm(); form.Text = "my text"; form.Show(); // Do some more work here } 回答1 尝试使用调用调用: public static Form globalForm; void Main() { globalForm = new Form(); globalForm.Show(); globalForm.Hide(); // Spawn threads here } void ThreadProc() { myForm form = new myForm()
  • 无法从其他类更改表单中的 textBox.text - C# - VS 2010(Can't change textBox.text in form from other classes - C# - VS 2010)
    问题 我有一个名为 Form1 的表单。 在其中,我有一个名为 Encrypt 的按钮。 当我点击那个按钮时,我调用了另一个类中的方法。 我希望该方法更改 textBox1.text 的值,但是当我使用此代码时没有任何反应 在 Form1 类中 public string txtbox1 { get { return textBox1.Text; } set { textBox1.Text = value; } } 在另一个类的方法中 Form1 textboxes = new Form1();//creating object of the Form1 class textboxes.txtbox1= "whatever"; 第一个文本框中没有任何变化。 就像我什么都没按一样!!! 任何帮助将不胜感激 回答1 在您的其他课程中,您需要引用单击按钮的表单(并且具有您现有的文本框),而不是新表单。 您正在实例化的这个新表单不是您在单击按钮的屏幕上看到的那个表单。 (我假设您的事件处理程序存在于 Form1 类中,然后它会根据需要将信息“转发”到其他类的方法?如果不是......它应该!) 按钮引用可通过sender对象和传递给事件处理程序的event args获得。 您可以通过将this关键字传递给其他类的方法来传递对当前Form1实例的引用。 或者,如果这对您有用
  • 使用ComboBox,UserControl和某些表单来更改语言(对于整个项目)(Using a ComboBox, UserControl and some forms to change language (for entire project))
    问题 在开始之前,我已经进行了研究,似乎找不到任何东西。 注意我对UserControl还是很陌生,所以这可能就是事实证明它很困难的原因。 I have a combobox in Form1 which when selected allows the user to change between a choice of 21 languages. 我创建了一个包含标签,按钮和复选框的UserControl-添加到名为Print的表单中。 如果用户选择法语,那么我将如何实现UserControl来更改项目中所有表单的语言? UserControl: 我在这里为按钮使用了get and set方法。 当在Form1中更改语言时,我希望此按钮(实际上是所有元素)都发生变化。 using System.Windows.Forms; namespace Print { public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } public string LabelPreview { get { return Button_Preview.Text; } set { Button_Preview.Text = value; } } } } 表格1:
  • C#.net更改标签文本(c# .net change label text)
    问题 您好,因为我尝试使用此代码,但由于某些原因它无法正常工作。 确实需要帮助。 问题是,当我进入站点时,标签不会从“ label”更改名称。 <asp:Label ID="Label1" runat="server" Text="label"></asp:Label> <% Label1.Text = "test"; if (Request.QueryString["ID"] != null) { string test = Request.QueryString["ID"]; Label1.Text = "Du har nu lånat filmen:" + test; } %> 回答1 您应该转换测试类型>>>> test.tostring(); 将最后一行更改为此: Label1.Text = "Du har nu lånat filmen:" + test.tostring(); 回答2 老问题了,但是我也遇到了这个问题,因此在分配Text属性后,调用Refresh()将更新文本。 Label1.Text = "Du har nu lånat filmen:" + test; Refresh(); 回答3 您是否尝试过在Page_Load()方法中运行代码? protected void Page_Load(object sender, EventArgs e) {
  • C#GUI命名约定的最佳做法? [关闭](Best practices for C# GUI naming conventions? [closed])
    问题 关门了。 这个问题是基于意见的。 它当前不接受答案。 想要改善这个问题吗? 更新问题,以便可以通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 无论用WinForms还是XAML编写的GUI,在我看到的项目之间似乎都有最广泛的命名约定。 对于一个用于人名的简单TextBox ,我已经看到了各种命名约定: TextBox tbName // Hungarian notation TextBox txtName // Alternative Hungarian TextBox NameTextBox // Not even camelCase TextBox nameTextBox // Field after field with TextBox on the end TextBox TextBoxName // Suggested in an answer... TextBox textBoxName // Suggested in an answer... TextBox uxName // Suggested in an answer... TextBox name // Deceptive since you need name.Text to get the real value TextBox textBox1 // Default name
  • 从另一个类更改文本框(Changing text box from another class)
    问题 我正在尝试更改位于 public partial class Form1 : Form 来自另一个班级。 我试过这样的事情 public void echo(string text) { this.textBox1.AppendText(text + Environment.NewLine); } 从另一个班级我称之为 Form1 cout = new Form1(); cout.echo("Does this work?"); 我得到空白输出。 我还尝试将static关键字添加到echo方法中,但得到了相同的结果。 我搜索了 Stack Overflow 并没有得到任何解决方案。 还有一件事触发了我,如果我添加cout.Show()相同的表单会弹出有效的textBox1内容。 这是为什么? 为什么它没有立即显示内容? 我该如何解决这个问题? 回答1 每次您说new Form1() 时,您都是在创建该表单的一个独特且独立的实例。 相反,您需要在尝试访问表单的类中创建一个变量。 例如,让我们在构造函数中传递它: public class MyClass { public Form1 MyForm; public MyClass(Form1 form){ this.MyForm = form; } public void echo(string text) { this
  • 在 C# wpf 中如何遍历网格并获取网格内的所有标签(in C# wpf how to loop through a grid and get all the labels inside of the grid)
    问题 那么您知道如何在 c# 中使用标准表单循环遍历面板并获取其中的所有标签吗? 所以你可以做这样的事情: foreach(Label label in Panel.Controls) 有没有办法为网格做到这一点? 就像是 foreach(Lable lable in Grid) 所以这个 foreach 可能在一个传递网格对象的函数中 private void getLabels(Grid myGrid) { foreach(Label label in myGrid) } 如果我这样做,它会告诉我“错误 CS1579:foreach 语句不能对类型为‘System.Windows.Controls.Grid’的变量进行操作,因为‘System.Windows.Controls.Grid’不包含‘GetEnumerator’的公共定义” 我现在知道还有另一种方法吗? 任何帮助,将不胜感激。 回答1 遍历 Grid.Children 并将所有内容转换为 Label。 如果它不为空,你就找到了一个标签。 回答2 normal forms - WPF 我们在 2014 年做 .Net Windows UI 的正常方式。 如果您正在使用 WPF,您需要抛弃从古老技术中获得的任何和所有概念,并理解并接受 WPF 心态。 基本上,您不会“迭代”WPF 中的任何内容,因为绝对没有必要这样做。
  • 如何使用C#验证字符串不包含HTML(How to validate that a string doesn't contain HTML using C#)
    问题 有没有人有一种简单,有效的方式来检查字符串是否不包含HTML? 基本上,我想检查某些字段仅包含纯文本。 我考虑过要寻找<字符,但是可以很容易地在纯文本中使用它。 另一种方法可能是使用以下命令创建一个新的System.Xml.Linq.XElement: XElement.Parse("<wrapper>" + MyString + "</wrapper>") 并检查XElement是否不包含任何子元素,但这对于我需要的东西似乎有点沉重。 回答1 以下内容将匹配任何匹配的标签集。 即<b>这个</ b> Regex tagRegex = new Regex(@"<\s*([^ >]+)[^>]*>.*?<\s*/\s*\1\s*>"); 以下内容将匹配任何单个标签。 即<b>(不必关闭)。 Regex tagRegex = new Regex(@"<[^>]+>"); 然后,您可以像这样使用它 bool hasTags = tagRegex.IsMatch(myString); 回答2 您可以通过使用HttpUtility.HtmlEncode对输入进行编码来确保纯文本。 实际上,根据您希望检查的严格程度,您可以使用它来确定字符串是否包含HTML: bool containsHTML = (myString != HttpUtility.HtmlEncode(myString)
  • 在 C# 中从另一个子窗体调用一个子窗体(calling one child form from another child form in c#)
    问题 我有 3 个表单:FormA、FormB 和 FormC,其中 FormA 是 mdiParent 表单,表单 B 和 C 是子表单。 我在 FormA 加载事件中编写了以下代码。 private void frmMain_Load(object sender, EventArgs e) { formB.MdiParent = this; //formB is instance of FormB formC.MdiParent = this; //formC is instance of FormC formB.Show(); } 我想要的是当我单击 FormB 上的按钮时,应显示 FormC。 现在要做到这一点,我需要在 FormB 中按钮的单击事件中创建另一个 FormC 实例,还是我应该能够使用在 FormA 中创建的实例? 如果需要创建一个单独的实例,那么有人可以解释这样做的原因吗? 编辑- Oded 给出的答案很适合我。 但是我可以将属性的返回类型设为 Form[] 以添加 1 个以上的引用,以便如果我想从 FormC 返回到 FormB,我可以使用类似的方法吗? 另外,如果我想将一些数据从 FormB 传递到 FormC,那么我该怎么做? 回答1 您的FormB需要一个对FormC的引用。 您可以在FromB上添加一个属性来执行此操作: public Form
  • 选中Form2上的复选框时,如何使Form1 label.text更改?(How to make Form1 label.text change when checkbox on form2 is checked?)
    问题 我是C#的新手,正在尝试使用2种不同形式的第一个实验。 我想这样做,以便您在Form1上有一个label1和button1,在Form2上有一个checkbox1。 在Form1上的button1打开Form2,并且一旦您在Form2上选中checkbox1,label1中的文本就会更改。 我认为这必须使用事件来完成,但是到目前为止,事件才是真正使我感到困惑的唯一事情,因此,我想本质上来说,这个问题更多地是关于事件的用法。 如果我在MSDN和其他网站上查找它,也会感到非常困惑。 帮助将不胜感激,这让我感到非常愚蠢。 回答1 您可以直接从Form1实例订阅Form2实例中复选框的事件CheckedChanged。 在Form1内部,就在显示Form2之前,订阅复选框的CheckedChanged事件 Form2 frm = new Form2(); frm.chkBox1.CheckedChanged += new EventHandler(this.ReceiveCheckedChanged); frm2.ShowDialog(); 然后在Form1(此)中定义在Form2中引发的checkedChanged事件的处理程序 private void ReceiveCheckedChanged(object sender, EventArgs e) { CheckBox chk
  • 如何创建支持带有图像背景的动态多行文本的 UIButton?(How can I create a UIButton supporting dynamic multiline text with image background?)
    问题 我正在尝试在 iOS 上创建一个 UI 元素,该元素可以扩展或收缩以适应动态的、通常是多行文本。 我需要在文本下方放置一个看起来很像消息气泡的图像。 但是,我的整个 UI 中只需要其中一个,因此表格视图似乎有点过分——除非有合理的必要。 为此,我尝试使用UILabel ,但它似乎对背景图像的支持非常有限。 我只能得到它来平铺图像,这不是我想要的。 似乎UIButton是最简单的构造,应该合理地完成我的要求,但我无法让它工作。 这是否则为空的单视图应用程序中代码的简化形式。 - (void)viewDidLoad { [super viewDidLoad]; NSString *text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; UIImage *image = [[UIImage imageNamed:@"speak_bubble_solid"] resizableImageWithCapInsets:UIEdgeInsetsMake(16, 24, 30, 12)]; UIButton *button = [UIButton buttonWithType
  • 在Windows窗体c#之间传递值(Passing Values Between Windows Forms c# [duplicate])
    问题 这个问题已经在这里有了答案: 在C#中的两个Windows窗体之间进行通信(12个答案) 2年前关闭。 我正在努力研究如何在表单之间传递值。 我有四种形式,我想将Login名检索到的信息传递给第四种也是最后一种形式。 到目前为止,这就是我所拥有的。 在此功能中: private void btnLogin_Click(object sender, EventArgs e) 我已经反序列化了我想要的数据,像这样: NewDataSet resultingMessage = (NewDataSet)serializer.Deserialize(rdr); 然后,当我调用下一个表格时,我已经这样做了: Form myFrm = new frmVoiceOver(resultingMessage); myFrm.Show(); 然后,我的VoiceOver表单如下所示: public frmVoiceOver(NewDataSet loginData) { InitializeComponent(); } private void btnVoiceOverNo_Click(object sender, EventArgs e) { this.Close(); Form myFrm = new frmClipInformation(); myFrm.Show(); } 调试时
  • 如何在Google地图标记旁边显示标签?(How to display a label next to a Marker for Google Maps?)
    问题 我想在Google地图上的标记旁边显示一个文本标签。 我以前使用过Virtual Earth,现在才开始使用Google Maps。 我尝试设置Title属性,但这只会更改滚动文本。 有没有一种方法可以在标记下方显示一小行文本,当用户缩放,平移和使用地图时该标记会停留在该行中? 提前致谢! 回答1 这里有一个很好的标签类,尽管您必须在标记旁边添加它。 回答2 对于Google Maps JavaScript API v3,请在此处查看示例。 源代码以正常和最小化形式提供。 回答3 如果您只想在标记下方显示标签,则可以扩展Google Maps Marker以添加标签的setter方法,并且可以通过扩展Google Maps overlayView这样来定义标签对象。 演示:jsFiddle <script type="text/javascript"> var point = { lat: 22.5667, lng: 88.3667 }; var markerSize = { x: 22, y: 40 }; google.maps.Marker.prototype.setLabel = function(label){ this.label = new MarkerLabel({ map: this.map, marker: this, text: label })