Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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#_Asp.net - Fatal编程技术网

C# 在图像按钮下动态添加文本

C# 在图像按钮下动态添加文本,c#,asp.net,C#,Asp.net,我正在从数据库加载名称和图像,并将它们动态添加到面板控件中。我想要的是一个图像和一个显示在该图像下的名称。但名称标签并不完全位于图像下方。是否有方法添加相对于图像按钮的标签 这是我从数据库加载图像和名称的代码: string query1 = "SELECT photo,name FROM Artist"; using(var conn = new SqlConnection("connectionStringHere")) using(SqlCommand cmd = new SqlComma

我正在从数据库加载名称和图像,并将它们动态添加到面板控件中。我想要的是一个图像和一个显示在该图像下的名称。但名称标签并不完全位于图像下方。是否有方法添加相对于图像按钮的标签

这是我从数据库加载图像和名称的代码:

string query1 = "SELECT photo,name FROM Artist";
using(var conn = new SqlConnection("connectionStringHere"))
using(SqlCommand cmd = new SqlCommand(query1, conn))
{
    conn.Open();
    using(SqlDataReader reader = cmd.ExecuteReader())
    {
        while(reader.Read())
        {
            byte[] bytes = (byte[])reader.GetValue(0);
            string strBase64 = Convert.ToBase64String(bytes);

            ImageButton imgButton = new ImageButton();
            imgButton.ImageUrl = "data:Image/png;base64," + strBase64;
            imgButton.Width = Unit.Pixel(200);
            imgButton.Height = Unit.Pixel(200);
            imgButton.Style.Add("padding", "5px");
            imgButton.Click += new ImageClickEventHandler(imgButton_Click);
            Panel1.Controls.Add(imgButton);

            Label lbl = new Label();
            lbl.Text = reader.GetString(1); 
            lbl.CssClass = "imageLable"; // style it in your .css file
            Panel1.Controls.Add(lbl);
        }
    }
}
这就是我看到的:


您只需在图像按钮下添加标签:

string query1=“选择照片,艺术家姓名”;
SqlCommand cmd=新的SqlCommand(query1,conn);
conn.Open();
SqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
字节[]字节=(字节[])读取器.GetValue(0);
string strBase64=Convert.TOBASE64字符串(字节);
ImageButton imgButton=新建ImageButton();
imgButton.ImageUrl=“数据:Image/png;base64,”+strBase64;
imgButton.Width=单位像素(200);
imgButton.Height=单位像素(200);
imgButton.Style.Add(“padding”,“5px”);
imgButton.Click+=新建ImageClickEventHandler(imgButton\u Click);
Panel1.控件.添加(imgButton);
标签lbl=新标签();
lbl.Text=reader.GetValue(1);
//TODO:在此处添加样式和大小参数
面板1.控件。添加(lbl);
}

您必须向该标签添加样式,因为它不是“图像”按钮的一部分,所以它不会是链接。如果您希望它是可点击的,您应该将
ImageButton
更改为
链接
,然后在
链接
控件内添加
图像
标签。

您只需要在图像按钮下添加标签:

string query1=“选择照片,艺术家姓名”;
SqlCommand cmd=新的SqlCommand(query1,conn);
conn.Open();
SqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
字节[]字节=(字节[])读取器.GetValue(0);
string strBase64=Convert.TOBASE64字符串(字节);
ImageButton imgButton=新建ImageButton();
imgButton.ImageUrl=“数据:Image/png;base64,”+strBase64;
imgButton.Width=单位像素(200);
imgButton.Height=单位像素(200);
imgButton.Style.Add(“padding”,“5px”);
imgButton.Click+=新建ImageClickEventHandler(imgButton\u Click);
Panel1.控件.添加(imgButton);
标签lbl=新标签();
lbl.Text=reader.GetValue(1);
//TODO:在此处添加样式和大小参数
面板1.控件。添加(lbl);
}

您必须向该标签添加样式,因为它不是“图像”按钮的一部分,所以它不会是链接。如果希望它是可单击的,则应将
ImageButton
更改为
链接
,然后在
链接
控件内添加
图像
标签。

ADO.NET代码中存在一些错误做法

  • 始终使用块包装实现IDisposable的所有内容
  • 作用域连接到使用它们的方法。Sql Server将处理连接池,因此请使用并处置它,而不是重用它
  • 不过,解决问题的办法是在面板上添加一个新标签,然后根据需要设置样式

    string query1 = "SELECT photo,name FROM Artist";
    using(var conn = new SqlConnection("connectionStringHere"))
    using(SqlCommand cmd = new SqlCommand(query1, conn))
    {
        conn.Open();
        using(SqlDataReader reader = cmd.ExecuteReader())
        {
            while(reader.Read())
            {
                byte[] bytes = (byte[])reader.GetValue(0);
                string strBase64 = Convert.ToBase64String(bytes);
    
                ImageButton imgButton = new ImageButton();
                imgButton.ImageUrl = "data:Image/png;base64," + strBase64;
                imgButton.Width = Unit.Pixel(200);
                imgButton.Height = Unit.Pixel(200);
                imgButton.Style.Add("padding", "5px");
                imgButton.Click += new ImageClickEventHandler(imgButton_Click);
                Panel1.Controls.Add(imgButton);
    
                Label lbl = new Label();
                lbl.Text = reader.GetString(1); // use GetString, not GetValue here
                lbl.CssClass = "imageLable"; // style it in your .css file
                Panel1.Controls.Add(lbl);
            }
        }
    }
    

    ADO.NET代码中存在一些错误做法

  • 始终使用块包装实现IDisposable的所有内容
  • 作用域连接到使用它们的方法。Sql Server将处理连接池,因此请使用并处置它,而不是重用它
  • 不过,解决问题的办法是在面板上添加一个新标签,然后根据需要设置样式

    string query1 = "SELECT photo,name FROM Artist";
    using(var conn = new SqlConnection("connectionStringHere"))
    using(SqlCommand cmd = new SqlCommand(query1, conn))
    {
        conn.Open();
        using(SqlDataReader reader = cmd.ExecuteReader())
        {
            while(reader.Read())
            {
                byte[] bytes = (byte[])reader.GetValue(0);
                string strBase64 = Convert.ToBase64String(bytes);
    
                ImageButton imgButton = new ImageButton();
                imgButton.ImageUrl = "data:Image/png;base64," + strBase64;
                imgButton.Width = Unit.Pixel(200);
                imgButton.Height = Unit.Pixel(200);
                imgButton.Style.Add("padding", "5px");
                imgButton.Click += new ImageClickEventHandler(imgButton_Click);
                Panel1.Controls.Add(imgButton);
    
                Label lbl = new Label();
                lbl.Text = reader.GetString(1); // use GetString, not GetValue here
                lbl.CssClass = "imageLable"; // style it in your .css file
                Panel1.Controls.Add(lbl);
            }
        }
    }
    

    您是否尝试过创建标签字段并动态设置其文本值?您是否尝试过创建新标签,将其文本设置为名称值并将其添加到imagebutton之后的面板中?是否尝试过创建标签字段并动态设置其文本值?您是否尝试过创建新标签,将其文本设置为“名称”值,并将其添加到imagebutton之后的面板中?问题是我正在一行中加载多个图像。因此,标签没有准确显示在图像按钮下。是否有方法相对于图像按钮调整标签?我将更新问题并添加一个屏幕截图以使其更清晰。@EL323-这取决于HTML。您可以将ImageButton和标签包装在
    div
    中,然后编写一个小CSS,将标签放在ImageButton的下方和中心。这取决于你想要它的结构,但是有很多方法可以做到。谢谢我试试看。我对CSS不是很满意。@EL323-您希望图像堆叠还是相邻,标签在下面?图像相邻,标签在下面。问题是我在一行中加载多个图像。因此,标签没有准确显示在图像按钮下。是否有方法相对于图像按钮调整标签?我将更新问题并添加一个屏幕截图以使其更清晰。@EL323-这取决于HTML。您可以将ImageButton和标签包装在
    div
    中,然后编写一个小CSS,将标签放在ImageButton的下方和中心。这取决于你想要它的结构,但是有很多方法可以做到。谢谢我试试看。我对CSS不是很满意。@EL323-你想让图像堆叠起来,还是让标签在下面的图像彼此相邻?让标签在下面的图像彼此相邻。