There is few ways to achieve what you want:
Public static property:
public class Info
{
    public static string CardName { get; set; } = string.Empty;
}
You can access it or set value to it directly by:
private void Form2_Load(object sender, EventArgs e)
{
    // Set
    Info.CardName = "Some name"; 
    // Get
    lblWelcome.Text = Info.CardName;
}
Public non-static property:
public class Info
{
    public string CardName { get; set; } = string.Empty;
}
You can access it or set value to it directly too, but need to create Info class instance before:
private void Form2_Load(object sender, EventArgs e)
{
    Info info = new Info();
    // Set
    info.CardName = "Some name"; 
    // Get
    lblWelcome.Text = info.CardName;
}
Private static field with separated public static Get and Set methods:
public class Info
{
    private static string cardName = string.Empty;
    public static string GetCardName()
    {
        return cardName;
    }
    public static void SetCardName(string name = "")
    {
        cardName = name;
    }
}
You can access GetCardName and SetCardName without creating Info class instance:
private void Form2_Load(object sender, EventArgs e)
{
    // Set
    Info.SetCardName("Some name"); 
    // Get
    lblWelcome.Text = Info.GetCardName();
}
Private non-static field with separated public non-static Get and Set methods:
public class Info
{
    private string cardName = string.Empty;
    public string GetCardName()
    {
        return cardName;
    }
    public void SetCardName(string name = "")
    {
        cardName = name;
    }
}
You can access GetCardName and SetCardName after creating Info class instance:
private void Form2_Load(object sender, EventArgs e)
{
    Info info = new Info();
    // Set
    info.SetCardName("Some name"); 
    // Get
    lblWelcome.Text = info.GetCardName();
}
Difference between fields and properties was pretty nice explained here: What is the difference between a field and a property?. In short, properties are "wrappers" over fields, which usually are private and you can't access to them directly or modify. It is a part of Member Design Guidelines. Also properties allow to add some validations through property setter to be sure that valid value is stored at cardName field, e.g.:
public class Info
{
    private string cardName = string.Empty;
    public string CardName
    {
        get => cardName;
        set 
        {
            // Check that value you trying to set isn't null
            if (value != null)
                cardName = value;
            // Or check that name is not too short
            if (value.Length >= 3) // Card name should be at least of 3 characters
                cardName = value;              
        }
    }    
}