在Winform中,用户可以根据单击的按钮选择颜色集。
颜色本身存储在不同的类中。使用反射时,调用的方法取决于所有按钮使用相同事件时单击的按钮。
代码形式:
private void Button_Theme__Click(object sender, EventArgs e)
{
Button button = sender as Button;
string[] Color = Regex.Split(button.Name.ToString(), "_");
Type thisType = this.GetType();
ColorTheme ColorTheme = new ColorTheme();
MethodInfo ColorMethod = thisType.GetMethod("ColorTheme.Theme_" + Color[2]);
Color[] ColorThemes = (Color[])ColorMethod.Invoke(this, null);
ColorThemeLight = ColorThemes[0];
ColorThemeMedium = ColorThemes[1];
ColorThemeDark = ColorThemes[2];
}
课程中的代码:
public Color[] Theme_Yellow()
{
ColorThemeLight = Color.FromArgb(255, 255, 255, 200);
ColorThemeMedium = Color.FromArgb(255, 191, 191, 150);
ColorThemeDark = Color.FromArgb(255, 127, 127, 100);
Color[] Colors = { ColorThemeLight, ColorThemeMedium, ColorThemeDark };
return Colors;
}
答案 0 :(得分:3)
要使用反射,您需要正确的Type
和方法名称:
private void Button_Theme__Click(object sender, EventArgs e)
{
Button button = sender as Button;
string[] Color = string.Split(button.Name, "_");
MethodInfo ColorMethod = typeof(ColorTheme).GetMethod("Theme_" + Color[2]);
ColorTheme theme = new ColorTheme();
Color[] ThemeColors = (Color[])ColorMethod.Invoke(theme, null);
ColorThemeLight = ThemeColors [0];
ColorThemeMedium = ThemeColors [1];
ColorThemeDark = ThemeColors [2];
}