窗口变化后的问题
可能有点长,但是我说的很详细,第一个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 ); } } }