读书人

窗口变化后的有关问题

发布时间: 2011-12-27 22:22:55 作者: rapoo

窗口变化后的问题
可能有点长,但是我说的很详细,第一个80分,谢谢:
我实现了控件的大小随窗口的变化而变化,但是
1.

C# code
private void c_Click(object sender, System.EventArgs e)        {            int n=0;            PictureBox p = sender as PictureBox;             this.lVw .SelectedItems .Clear ();            foreach(ListViewItem item in this.lVw.Items)             {                 if( item.SubItems [n].Text==p.Tag.ToString ())                 {                     this.lVw.Items[n].Selected=true;                    this.lVw.Focus ();                    break;                 }                 ++n;             }         }

上边是实现PictureBox 也listview中的数据对应的,但是我加入使控件的大小随窗口的大小改变为变化的代码后,上面的就对应不上了,断点发现是if中的判断语句不相等了,是Tag的值变化了,怎么改给点建议
2 .我不想让我画的线也随窗口的改变而变化,解决方法只有重画线么,如果是重画,那么怎么让原来画的线在窗口变大的时候隐藏
给点建议

[解决办法]
关注+学习!!
[解决办法]
1、if( item.SubItems [n].Text==p.Tag.ToString ())

你这个语句很正常啊,你是不是有代码修改了PictureBox的Tag属性?你可通过设置断点检查。

2、你重绘的时间,调用控件的Invalidate()方法进行重绘
[解决办法]

[解决办法]
但是我加入使控件的大小随窗口的大小改变为变化的代码
----->
你看下能否直接设置控件的anchor属性
[解决办法]
http://topic.csdn.net/u/20080521/13/fd0f856e-467c-47e5-ac05-2cca7850b143.html
两个贴内容一样.
你着段代码是干什么的呢?tag里面存放的是什么呢?不能用其他方法、自定义属性或是变量来替换吗?
提示为picutrebox添加一个新的属性newTag

C# code
    public class newPictureBox : PictureBox     {        public object newTag;        public object NewTag        {            get            {                return NewTag;            }            set            {                NewTag = value;            }        }    }        private void c_Click(object sender, System.EventArgs e)        {            int n=0;            PictureBox p = sender as PictureBox;             this.lVw .SelectedItems .Clear ();            p.Image =null;            p.BackgroundImage =Image.FromFile (Application.StartupPath +@"\背景\4.jpg");            foreach(ListViewItem item in this.lVw.Items)             {                 if( item.SubItems [0].Text==p.vewTag.ToString ()) //这里我不知道你原来picturebox的tag干什么用了                {                     this.lVw.Items[n].Selected=true;                    this.lVw.Focus ();                    break;                 }                 ++n;             }         }private void setTag(Control cons)        {            foreach (Control con in cons.Controls )            {                //if (con is PictureBox) continue;这里已经不需要拉。                con.Tag = con.Width +":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;                if (con.Controls.Count > 0)                {                    setTag(con);                   }            }        }        private void setConstrols(float newx,float newy,Control  cons)        {            foreach (Control  con in cons .Controls )            {                string[] mytag = con.Tag.ToString().Split(new char[] { ':' });                float a = Convert.ToSingle(mytag[0]) * newx;                                    con.Width = (int)a;                a=Convert.ToSingle(mytag[1]) * newy;                con.Height = (int)(a);                a=Convert.ToSingle(mytag[2]) * newx;                con.Left = (int)(a);                a=Convert.ToSingle(mytag[3]) * newy;                con.Top = (int)(a);                Single currentSize = Convert.ToSingle (mytag[4]) * newy;                con .Font =new Font (con.Font .Name ,currentSize,con.Font .Style ,con.Font .Unit );                if(con.Controls .Count >0)                {                    setConstrols (newx ,newy ,con );                }            }        } 

读书人网 >C#

热点推荐