Tag: 动态

如何获取调用方法的参数值?

题 我正在编写一些代码,需要能够从调用类的方法中获取参数的值 。 我知道如何一直到ParameterInfo []数组,但我不知道如何获取值。 这有可能吗? 如果是,我认为它与使用MethodInfo对象的MethodBody属性有关,它允许你检查IL流,包括属性,但我不知道怎么做,我还没有找到适用于Google的代码。 码 // Finds calling method from class that called into this one public class SomeClass { public static void FindMethod() { for (int i = 1; i < frameCount; i++) { var frame = new StackFrame(i); var methodInfo = frame.GetMethod(); if (methodInfo.DeclaringType != this.GetType()) { string methodName = […]

如何处理以编程方式添加的按钮事件? C#

我正在使用C#制作一个Windows窗体应用程序。 我在运行时以编程方式添加按钮和其他控件。 我想知道如何处理这些按钮的点击事件?

C#动态关键字 – 运行时惩罚?

在C#中将实例定义为动态意味着: 编译器不执行编译时类型检查,但运行时检查就像对所有实例一样。 编译器不执行编译时类型检查,但运行时检查发生,与任何其他非动态实例不同。 与2相同,这会带来性能损失(微不足道的?潜在的重要性?)。

访问动态创建的控件(c#)

在我的代码(c#)后面,我动态创建了一些RadioButtonLists,每个RadioButtonLlist中都有更多的RadioButton。 我将所有控件都放到了特定的面板上。 我需要知道的是如何在以后访问这些控件,因为它们不是在.aspx文件中创建的(从工具箱中拖放)? 我试过这个: foreach (Control child in panel.Controls) { Response.Write(“test1”); if (child.GetType().ToString().Equals(“System.Web.UI.WebControls.RadioButtonList”)) { RadioButtonList r = (RadioButtonList)child; Response.Write(“test2”); } } “test1”和“test2”不会显示在我的页面中。 这意味着这个逻辑出了问题。 有什么建议我该怎么办?

动态vs对象类型

我可以互换地使用动态和对象类型。 这两种类型有什么区别吗? 使用一个比另一个有任何性能影响吗? 哪一个更灵活?

动态的使用被认为是一种不好的做法吗?

在C#中,有人可以这样做: MyClass myInstance = new MyClass(); dynamic mydynamicInstance = myInstance; 然后,调用一个方法,如: //This method takes a MyClass argument and does something. Caller.InvokeMethod(myDynamicInstance); 现在,这将导致在运行时确定myInstance类型,如果它有效,将正常调用Caller.InvokeMethod 。 现在,我的问题是,如果这被认为是使用dynamic的不良做法,尤其是在以下情况中: 1) InvokeMethod使用内部reflection实例化myDynamicInstance类型的另一个实例。 2)有一个抽象基类MyBaseClass及其子类,包括MyBaseClass 。 如果我们为所有这些派生类都有许多重载的InvokeMethod方法,我们是否可以使用它来在运行时允许类型确定,然后通过方法重载进行适当的调用(或者对方法调用的后期绑定)类)?: public abstract class MyBaseClass {/*…*/} public class MyClass : MyBaseClass {/*…*/} public class MyAnotherClass : MyBaseClass {/*…*/} MyBaseClass myBaseClassRef = new MyClass(); dynamic myDynamicInstance = myBaseClassRef; […]

获取声明为动态的对象的Type

我想得到一个动态对象的类型,如: dynamic tmp = Activator.CreateInstance(assembly, nmspace + “.” + typeName); Type unknown = tmp.GetType(); 除了上面的内容之外,GetType()返回动态对象的包装类型,而不是包装对象的类型。 谢谢!

如何动态创建5个按钮并分配单个单击事件?

我需要在Windows窗体上动态创建5个按钮,每个按钮都应该响应click事件。 我尝试了但是所有按钮都响应同一事件。

在C#中删除动态创建的控件

我有一个程序,可以在图表中添加一系列“blips”: PictureBox blip = new PictureBox(); blip.Location = new Point(blipHours, blipAltitude); blip.Size = new Size(6, 6); blip.BackColor = System.Drawing.Color.Lime; blip.Text = “”; blip.Name = callsign; this.Controls.Add(blip); this.Controls.SetChildIndex(blip, 0); 如何清除使用此代码创建的所有“blip”按钮? 当名称等于某个callsign时,有没有办法改变blip的背景颜色? 每个blip都与ListBox的选择相关联,我想在用户选择时改变blip的颜色。

动态更改datagridview单元格颜色

我有一个填充了数据的dataGridView对象。 我想单击一个按钮,让它更改单元格背景的颜色。 这就是我现在拥有的 foreach(DataGridViewRow row in dataGridView1.Rows) { foreach(DataGridViewColumn col in dataGridView1.Columns) { //row.Cells[col.Index].Style.BackColor = Color.Green; //doesn’t work //col.Cells[row.Index].Style.BackColor = Color.Green; //doesn’t work dataGridView1[col.Index, row.Index].Style.BackColor = Color.Green; //doesn’t work } } 所有这三个都会导致表格以重叠的方式重新绘制,并且尝试重新调整表格的大小变得一团糟。 单击单元格时,值仍然突出显示,背景颜色不会更改。 问:如何在表存在后更改单个单元格的背景颜色?