我有一个用户控制图中我的Form 1设计,这是调整它的代码:为什么在调整用户控件图形的大小时不会调整大小?
private void graphChart1_MouseEnter(object sender, EventArgs e)
{
graphChart1.Size = new Size(600, 600);
}
当我把鼠标移动到控制区域它不调整其大小使其变大,但是删除了一些其他控件。
这是一个图像之前,我将鼠标移动控制:
,这是一个图像,当我移动鼠标控制:
这是图表所在的用户控件的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Windows.Forms.DataVisualization.Charting;
namespace GatherLinks
{
public partial class GraphChart : UserControl
{
public GraphChart()
{
InitializeComponent();
}
private double f(int i)
{
var f1 = 59894 - (8128 * i) + (262 * i * i) - (1.6 * i * i * i);
return f1;
}
private void GraphChart_Load(object sender, EventArgs e)
{
chart1.Series.Clear();
var series1 = new System.Windows.Forms.DataVisualization.Charting.Series
{
Name = "Series1",
Color = System.Drawing.Color.Green,
IsVisibleInLegend = false,
IsXValueIndexed = true,
ChartType = SeriesChartType.Line
};
this.chart1.Series.Add(series1);
for (int i = 0; i < 100; i++)
{
series1.Points.AddXY(i, f(i));
}
chart1.Invalidate();
}
}
}
编辑:
我这样做是在用户控件类代码:
public void ChangeChartSize(int width, int height)
{
chart1.Size = new Size(width, height);
chart1.Invalidate();
}
我不得不添加chart1.Invalidate();
使其生效,但随后大小的用户控件中的图表它的自我。用户控件没有改变。
所以在Form1鼠标输入我也改变了graphChart1控制大小:
private void graphChart1_MouseEnter(object sender, EventArgs e)
{
graphChart1.ChangeChartSize(600, 600);
graphChart1.Size = new Size(600, 600);
}
的问题是,现在它采取了大量的时间将近20秒左右,直到它生效,当我将鼠标移动到控件上。如果我将删除第二行:
graphChart1.Size = new Size(600, 600);
它会工作的很快,但它会改变图表只在控件内,但它不会改变控件大小。
也试图与无效:
private void graphChart1_MouseEnter(object sender, EventArgs e)
{
graphChart1.ChangeChartSize(600, 600);
graphChart1.Size = new Size(600, 600);
graphChart1.Invalidate();
}
但仍然十分缓慢。也许我需要在用户控件类代码中更改自身大小的控件,而不是在Form1中?
一般来说,我想要做到这一点,当我用鼠标移动控制这个图表用户控件时,它将被调整大小,并且将它的位置改变到屏幕中心,然后当我将鼠标移出用户控制图表时将回到原来的位置和大小。 – user2065612 2013-02-28 22:20:05
也许我还需要调整它自己的用户控件大小?而不仅仅是图表? – user2065612 2013-02-28 22:20:28
尼古拉我试图让graphChart1.Invalidate();紧跟在graphChart1.Size行之后,但直到事件发生变化但它没有帮助才使其变慢,但是与上面相同的问题。 – user2065612 2013-02-28 22:27:42