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#的IExtenderProviderinterface。

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# 代码

[C#教程01]C# 简介

c# 在 c# 应用程序中保存配置数据的最佳方法是啥。 [复制]

c#快速入门~在java基础上,知道C#和JAVA 的不同即可

C#第一章 第一个C#程序