Code Bye

C#主窗体只能改变子窗体text一次

我在主窗体MainFrm中panel中嵌入了一个子窗体MsgFrm,在子窗体上有一个button2,现在,我单击主窗体列表上一行时候,也就是响应private void listView1_MouseClick(object sender, MouseEventArgs e)
        {),我需要将这一行上第一列的值传给子窗体的button2.也就是改变button2 的text。问题是,我单击第一行时候能够改变,再单击时候发现button2 的text就不改变了。在子窗体时候如果改变button2的text是可以改变的。modifier已经设置为public。这样改变
MsgFrm msgfrm = new MsgFrm();
msgfrm.button2.Text = strname;就是不能改变两次,会一直显示第一次单击的的那个内容。用修改属性的方法也是一样问题
public string FrmTxt
        {
            get { return this.button2.Text; }//FrmOne的TextBox是textbox1
            set { this.button2.Text = value; }
        }
问题应该描述清楚了吧,大神们请指教指教呀

放listView1_MouseClick完整的代码吧。你这说的还是不够清除
MouseClick 是鼠标点击,,,在选择项改变事件里写赋值代码
20分
MsgFrm msgfrm = new MsgFrm();
msgfrm.button2.Text = strname;

把msgfrm作为全局变量,只new一次
不要每单击一次,就new一个窗体

你单步调试一下,看第二次进入MouseClick事件,你的strname是否发生了改变?
引用 4 楼 lovelj2012 的回复:

你单步调试一下,看第二次进入MouseClick事件,你的strname是否发生了改变?

改变了,但是界面上没有显示改变后的值。为什么呢?怎么样才能显示出来呀

引用 5 楼 ycs34082419900527 的回复:
Quote: 引用 4 楼 lovelj2012 的回复:

你单步调试一下,看第二次进入MouseClick事件,你的strname是否发生了改变?

改变了,但是界面上没有显示改变后的值。为什么呢?怎么样才能显示出来呀

贴点完整点儿的代码瞧瞧

引用 1 楼 marswangbo 的回复:

放listView1_MouseClick完整的代码吧。你这说的还是不够清除

已经解决了,完整的:
 public void listView1_MouseClick(object sender, EventArgs e)
        {
            //panelright.Controls.Clear();
            timer_setimg.Enabled = false;
            
            string strID = listView1.SelectedItems[0].SubItems[0].Text;
            int id = Convert.ToInt32(strID);
            string sql = string.Format(“select 集客名字 from f_guests where 集客编号={0}”, id);
            DataTable dt = sqlfun.Selectinfo(sql);
            if (dt == null)
            {
                return;
            }
            string strname = dt.Rows[0][0].ToString();
           // msgfrm.FormOneTxt = strname;
            //msgfrm.myButton1_UserControlBtnClicked(null,null);
            msgfrm.button2.Text = strname;
            msgfrm.passme(id);//这里我改变了,进入msgfrm里面去改变试试,还是一样。原因楼下有正解
            msgfrm.TopLevel = false;
            panelright.Controls.Add(msgfrm);
            msgfrm.Location = new Point(0, 176);
            msgfrm.Size = new Size(panelright.Width, panelright.Height – 176);
            msgfrm.BackColor = Color.LightCyan;
            msgfrm.Show();
            //MessageBox.Show(“hi”);
        }

引用 3 楼 Z65443344 的回复:

MsgFrm msgfrm = new MsgFrm();
msgfrm.button2.Text = strname;

把msgfrm作为全局变量,只new一次
不要每单击一次,就new一个窗体

就是 这样的,多谢赐教啊!but why?

引用 6 楼 lovelj2012 的回复:
Quote: 引用 5 楼 ycs34082419900527 的回复:
Quote: 引用 4 楼 lovelj2012 的回复:

你单步调试一下,看第二次进入MouseClick事件,你的strname是否发生了改变?

改变了,但是界面上没有显示改变后的值。为什么呢?怎么样才能显示出来呀

贴点完整点儿的代码瞧瞧

 点击事件的代码刚刚已经贴了,回1楼的,按照3楼的方法试了,可以改变了,就是每次单击时候要new窗体导致不行,不知道为啥子

因为你new出来的窗体是新的窗体,跟你现在正在显示的那个没有任何关系啊
引用 10 楼 Z65443344 的回复:

因为你new出来的窗体是新的窗体,跟你现在正在显示的那个没有任何关系啊

好吧,我添加了一个window窗体msgfrm,然后重复的new出来显示,后面操作以为就是对同一个窗体操作了。thanks


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#主窗体只能改变子窗体text一次