在用户控制代码顶部
int myindex = 0;
MainForm mainForm;
构造器
public HistogramaDesenat(MainForm mf)
{
mainForm = mf;
UP();
}
UP方法
public void UP()
{
myindex = mainForm.index;
}
以主要形式
public int index = 0;
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
index = listView1.SelectedIndices[0];
histogram.UP();
Histogram.Invalidate();
}
}
在UP方法的usercontrol类中,当使用断点时,我看到myindex值正在从主窗体中的选定索引获取值。
i在列表中选择查看索引10中的项目,并且i在用户控件中看到该索引
但是当我在usercontrolpaint事件中使用变量myindex时,由于某种原因,myindex的值是0而不是10:
private void HistogramaDesenat_Paint(object sender, PaintEventArgs e)
{
if (myIsDrawing)
{
Graphics g = e.Graphics;
Pen myPen1 = new Pen(new SolidBrush(Color.Red), myXUnit);
Pen myPen = new Pen(new SolidBrush(myColor),myXUnit);
//The width of the pen is given by the XUnit for the control.
for (int i=0;i<myValues.Length;i++)
{
//We draw each line
g.DrawLine(myPen,
new PointF(myOffset + (i*myXUnit), this.Height - myOffset),
new PointF(myOffset + (i*myXUnit), this.Height - myOffset - myValues[i] * myYUnit));
//We plot the coresponding index for the maximum value.
if (myValues[i]==myMaxValue)
{
SizeF mySize = g.MeasureString(i.ToString(),myFont);
g.DrawString(i.ToString(),myFont,new SolidBrush(myColor),
new PointF(myOffset + (i*myXUnit) - (mySize.Width/2), this.Height - myFont.Height ),
System.Drawing.StringFormat.GenericDefault);
}
}
g.DrawLine(myPen1,
new PointF(myOffset + (myindex * myXUnit), this.Height - myOffset),
new PointF(myOffset + (myindex * myXUnit), this.Height - myOffset - myValues[myindex] * myYUnit));
1条答案
按热度按时间oug3syen1#
C#是区分大小写的。我在
listView1_SelectedIndexChanged()
方法中看到了这一点:请注意这两行中小写和大写的
H
之间的区别。这是两个不同的变量,可能引用控件的不同示例。