Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用字符串隐藏图像_C# - Fatal编程技术网

C#使用字符串隐藏图像

C#使用字符串隐藏图像,c#,C#,所以我需要隐藏一个名为imgX的面板,X是一个从1到无穷大的数字。 每个图像旁边都有一个按钮,上面有文本x,x与img名称中的x相同。 所以我需要用数字x来隐藏相应的img。有什么帮助吗 编辑:我设法让它工作,我使用了这段代码,它工作了: 字符串ctrlName=((控制)发送方).Text; Panel tbx=this.Controls.Find(“Img”+ctrlName,true).FirstOrDefault()作为面板; tbx.Hide()由于您几乎没有提供任何信息,我只能猜测您

所以我需要隐藏一个名为imgX的面板,X是一个从1到无穷大的数字。 每个图像旁边都有一个按钮,上面有文本x,x与img名称中的x相同。 所以我需要用数字x来隐藏相应的img。有什么帮助吗

编辑:我设法让它工作,我使用了这段代码,它工作了:
字符串ctrlName=((控制)发送方).Text;
Panel tbx=this.Controls.Find(“Img”+ctrlName,true).FirstOrDefault()作为面板;

tbx.Hide()

由于您几乎没有提供任何信息,我只能猜测您需要什么。因此,也许这可以帮助您:

public Form1()
{
    InitializeComponent();
    //attach same click handler on *all *buttons.
    //that can be made like this, in form constructor, or via form designer
    button1.Click += Button_Click;
    button2.Click += Button_Click;
    button3.Click += Button_Click;
    button4.Click += Button_Click;
    //etc...
    //notice that right part is always the samme :)
}

//handler method
private void Button_Click(object sender, EventArgs e)
{
    //get button that called this method by casting it from object
    var btn = sender as Button;
    //use regex to get number from button and construct panel name
    var number = new Regex(@"\d+").Match(btn.Name);
    var targetPanel = "img" + number.Value.ToString();
    //find all controls of type panel, and then single one that has "targetPanel" name
    var pnl = this.Controls.OfType<Panel>().Single(pnl => pnl.Name == targetPanel):
    //make it invisible
    pnl.Visible = false;
}
public Form1()
{
初始化组件();
//在*所有*按钮上附加相同的单击处理程序。
//可以这样做,在表单构造函数中,或者通过表单设计器
按钮1.点击+=点击按钮;
按钮2.点击+=按钮点击;
按钮3.点击+=按钮点击;
按钮4.点击+=按钮点击;
//等等。。。
//请注意,正确的部分始终是samme:)
}
//处理程序方法
私有无效按钮\u单击(对象发送者,事件参数e)
{
//通过从对象强制转换来获取调用此方法的按钮
var btn=发送方作为按钮;
//使用正则表达式从按钮获取编号并构造面板名称
变量编号=新正则表达式(@“\d+”).Match(btn.Name);
var targetPanel=“img”+number.Value.ToString();
//查找panel类型的所有控件,然后查找具有“targetPanel”名称的单个控件
var pnl=this.Controls.OfType().Single(pnl=>pnl.Name==targetPanel):
//让它隐形
pnl.Visible=false;
}

Winforms?网状物Wpf?你试过什么?很抱歉提供了这么少的信息。我正在使用windows窗体,并尝试执行类似于
string-ctrlName=((控件)sender)的操作;MessageBox.Show(“Img”+ctrlName);(“Img”+ctrlName.Hide()无效。您可以通过以下方式获取控件并将其隐藏:
this.Controls.OfType().FirstOrDefault(“Img”+ctrlName)?.hide()它告诉我无法将第二个参数从string转换为System.funcy,可能是的重复