作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Visual Studio 中的 c# 编写具有一个窗口窗体的简单应用程序,应用程序 exe 将由 excel VBA 宏打开,应用程序将在启动时读取 activeworkbook.activesheet.cell(1,1) 的值,当发生任何更改时事件表。
该表单具有以下控件:
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Windows.Forms;
using ZedGraph;
using xl = Microsoft.Office.Interop.Excel;
namespace TestLiveZed
{
public partial class GraphForm : Form
{
public object ZedGraphcontrol1 { get; private set; }
public GraphForm()
{
InitializeComponent();
PlotGraph();
ReadExcel();
}
private void OWB_SheetChange(Object Sh, Range Target)
{
UpdateText(Target.Value.ToString());
}
private delegate void UpdateProgDelegate(String uptxt);
private void UpdateText(String uptxt)
{
if (this.label1.InvokeRequired)
{
UpdateProgDelegate updateCallBack = new UpdateProgDelegate(UpdateText);
this.Invoke(updateCallBack, new object[] { uptxt });
}
else
{
label1.Text = uptxt.ToString();
}
}
private void ReadExcel()
{
xl.Application oXL = (xl.Application)Marshal.GetActiveObject("Excel.Application");
Workbook oWB;
Worksheet oSheet;
oWB = oXL.ActiveWorkbook;
oSheet = oWB.ActiveSheet;
oWB.SheetChange += OWB_SheetChange;
label1.Text = Convert.ToString(oSheet.Cells[1, 1].Value);
}
private void PlotGraph()
{
GraphPane myPane = zedGraphControl1.GraphPane;
myPane.Title.Text = "Company A VS B";
myPane.XAxis.Title.Text = "r/D";
myPane.YAxis.Title.Text = "K";
string[] clr = { "Black", "Green", "Blue", "Orange", "Yellow", "Black", "Cyan", "DarkCyan", "Aqua", "Purple", "Pink", "Red", "AliceBlue", "Grey", "DarkGreen" };
int tr = 0;
for (int y = 0; y <= 180; y = y+15)
{
AddCurv(y,tr, clr);
tr++;
}
}
private void AddCurv(int y,int tr,string[] clr)
{
PointPairList CompAList = new PointPairList();
for (double i = 0.5; i < 16; i = i + 0.2)
{
double f = 0.02;
int Beta = y;
double Rratio = i;
double C = Math.Sin(0.5 * Beta * Math.PI / 180);
double AL = Beta * Math.PI / 180;
double r = (Math.Pow(C, 0.5) + C) / Math.Pow(Rratio, 4 * AL / Math.PI);
double K = f * AL * Rratio + (0.10 + 2.4 * f) * C + (6.6 * f * r);
CompAList.Add(i, K);
//CompBList.Add(i + 1, ComBData[i]);
};
string vclr = clr[tr];
_ = zedGraphControl1.GraphPane.AddCurve("Angle = " + y.ToString(), CompAList, Color.FromName(vclr), SymbolType.None);
zedGraphControl1.GraphPane.YAxis.Scale.Min = 0;
zedGraphControl1.GraphPane.YAxis.Scale.Max = 1;
zedGraphControl1.GraphPane.XAxis.Scale.Min = 0;
zedGraphControl1.GraphPane.XAxis.Scale.Max = 16;
zedGraphControl1.AxisChange();
zedGraphControl1.Refresh();
}
}
}
最佳答案
最后我设法让它工作
将表单事件设置为激活和停用
运行 void Readexcel();
private void Form1_Activated(object sender, EventArgs e)
{
ReadExcel();
}
private void Form1_Deactivate(object sender, EventArgs e)
{
ReadExcel();
}
关于c# - 执行其他功能时,SheetChange 事件未获取事件 Excel 单元格的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72155117/
所以我在 Excel 中的 SheetChange 事件中编码。我想知道是否在命名范围内进行了更改。所以本质上: Private Sub Workbook_SheetChange(ByVal Sh A
我正在使用 Visual Studio 中的 c# 编写具有一个窗口窗体的简单应用程序,应用程序 exe 将由 excel VBA 宏打开,应用程序将在启动时读取 activeworkbook.act
我的 Excel 工作簿中有一些特殊的单元格,这些单元格由我的 Excel 加载项管理。我想阻止用户更改这些单元格的内容,但我也想知道,用户想要在这些单元格中输入什么值。在 SheetChange 事
我是一名优秀的程序员,十分优秀!