C# - 在 C# winform/webform 中是不是有类似 jquery handle classhtml 的东西?
Posted
技术标签:
【中文标题】C# - 在 C# winform/webform 中是不是有类似 jquery handle classhtml 的东西?【英文标题】:C# -Does it have a thing like jquery handle classhtml in C# winform/webform?C# - 在 C# winform/webform 中是否有类似 jquery handle classhtml 的东西? 【发布时间】:2019-08-07 21:55:31 【问题描述】:我来自 Web 开发,遇到一个使用 ASP.NET 网络表单和 C# 窗口表单的项目 那么请问你,代码下面有没有类似jquery的东西?
$(".classinput").hide();
我可以在 formcontrol 中有一个类似于 htmlclass 的东西吗?我想使用可能的最短代码隐藏所有目标文本框 谢谢:)
【问题讨论】:
你可以循环抛出这些控件并使用control.Visible = false;
【参考方案1】:
为时已晚。但它就在这里。 :)
一开始没有简单的方法来实现它。但是我们可以构建功能并使用它。 :)
你可以使用C#的IExtenderProvider
interface。
GroupNameExtender
[ProvideProperty("GroupName", typeof(Control))]
public class GroupNameExtender : Component, IExtenderProvider
private Hashtable groupNameValues = new Hashtable();
private List<KeyValuePair<string, List<Control>>> groupControls = new List<KeyValuePair<string, List<Control>>>();
public bool CanExtend(object extendee)
return (extendee is TextBox && !(extendee is Form));
public string GetGroupName(Control control)
if (groupNameValues.ContainsKey(control))
return (string)groupNameValues[control];
return null;
public void SetGroupName(Control control, string value)
if (string.IsNullOrEmpty(value))
groupNameValues.Remove(control);
else
groupNameValues[control] = value;
var kv = groupControls.Where(item => item.Key == value).FirstOrDefault();
var isNewGroup = kv.Equals(default(KeyValuePair<string, List<Control>>));
if (isNewGroup)
kv = new KeyValuePair<string, List<Control>>(value, new List<Control>());
kv.Value.Add(control);
if (isNewGroup)
groupControls.Add(kv);
public void HideGroup(string name)
var controls = getGroupControls(name);
if (controls != null)
controls.Select(c => c.Visible = false; return c; ).ToList();
public void ShowGroup(string name)
var controls = getGroupControls(name);
if (controls != null)
controls.Select(c => c.Visible = true; return c; ).ToList();
public bool IsGroupVisible(string name)
var controls = getGroupControls(name);
return controls.FirstOrDefault().Visible;
private List<Control> getGroupControls(string name)
return groupControls.Where(kv => kv.Key == name).FirstOrDefault().Value;
一旦有了扩展器,它就会在工具箱中创建一个控件。您可以在每个表单上使用它。
一旦扩展器控件出现在您的表单中。除表单之外的所有控件都将具有一个新属性,您可以在其中设置 GroupName。
实施背后的代码
private void Form1_Load(object sender, EventArgs e)
groupNameExtender1.HideGroup("Group1");
private void button1_Click(object sender, EventArgs e)
var group1 = "Group1";
var group2 = "Group2";
if (groupNameExtender1.IsGroupVisible(group1))
groupNameExtender1.HideGroup(group1);
else
groupNameExtender1.ShowGroup(group1);
if (groupNameExtender1.IsGroupVisible(group2))
groupNameExtender1.HideGroup(group2);
else
groupNameExtender1.ShowGroup(group2);
样本输出
【讨论】:
以上是关于C# - 在 C# winform/webform 中是不是有类似 jquery handle classhtml 的东西?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中以编程方式检查字符串是不是包含有效的 C# 代码
c# 在 c# 应用程序中保存配置数据的最佳方法是啥。 [复制]