可能有点长,但是我说的很详细,第一个80分,谢谢:
我实现了控件的大小随窗口的变化而变化,但是
1.
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.
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 .我不想让我画的线也随窗口的改变而变化,解决方法只有重画线么,如果是重画,那么怎么让原来画的线在窗口变大的时候隐藏
给点建议
----->
你看下能否直接设置控件的anchor属性
两个贴内容一样.
你着段代码是干什么的呢?tag里面存放的是什么呢?不能用其他方法、自定义属性或是变量来替换吗?
提示为picutrebox添加一个新的属性newTag
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 );
}
}
}这样在工具箱里面就添加了一个newpicturebox控件,你可以把它拖到你的窗口上用拉.
{
public object newTag;
public object NewTag
{
get
{
return newTag;
}
set
{
newTag = value;
}
}
}
{
public object newTag;
public object NewTag
{
get
{
return newTag;
}
set
{
newTag = value;
}
}
}