C# 带有单选按钮的图像控制

C# 带有单选按钮的图像控制,c#,asp.net,events,user-controls,C#,Asp.net,Events,User Controls,我需要一个控件,它可以保存一个图像和两个单选按钮,就像我们在fb/orkut上上传图片时的那个。 1.形象 2.删除单选按钮。 3.封面单选按钮。[将此图像设置为相册封面] 我用这三样东西创建了一个用户控件。 在我的aspx页面上单击一个按钮,我需要添加此用户控件。 意味着,用户将使用FileUpload选择图像,当他单击按钮时,应加载此用户控件。 我可以加载控件。检查以下代码 <code> <pre lang="cs"> protected void btnAddURL

我需要一个控件,它可以保存一个图像和两个单选按钮,就像我们在fb/orkut上上传图片时的那个。 1.形象 2.删除单选按钮。 3.封面单选按钮。[将此图像设置为相册封面]

我用这三样东西创建了一个用户控件。 在我的aspx页面上单击一个按钮,我需要添加此用户控件。 意味着,用户将使用FileUpload选择图像,当他单击按钮时,应加载此用户控件。 我可以加载控件。检查以下代码

<code>
<pre lang="cs">
protected void btnAddURL_Click(object sender, EventArgs e)
{

  if (FileUpload1.HasFile)
   {
//ItemList is an array list used to store the filename.
        ItemList.Add(FileUpload1.FileName);
        showImage();
    }
    }</pre>

    public void showImage()
    {

        PlaceHolder p = new PlaceHolder();

//Create Thumbnail
        FileUpload1.SaveAs(@"D:\ASP\Project_Dec_16\RealEstate\SaveImage\" +    FileUpload1.FileName);
        System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"D:\ASP\Project_Dec_16\RealEstate\SaveImage\" + FileUpload1.FileName);
        System.Drawing.Image bmp2 = img1.GetThumbnailImage(100, 100, null, IntPtr.Zero);
        bmp2.Save(@"D:\ASP\Project_Dec_16\RealEstate\SaveImage\thumbnail\L\" + FileUpload1.FileName);

//Load the images selected by user
        for (int i = 0; i &lt;= ItemList.Count - 1; i++)
        {
            Control MyUserControl;


// Load user control dynamically
                MyUserControl = LoadControl(&quot;MyControl.ascx&quot;);
                    MyUserControl.ID = &quot;MyUserControl&quot; + cnt++;
  // Assign URL
    Image MyImage = (Image)MyUserControl.FindControl("Image1");
                   // MyImage.ID = "Image" + cnt;
                    MyImage.ImageUrl = "~/SaveImage/thumbnail/L/" + ItemList[i].ToString();
   // Add control to panel.
                   p.Controls.Add(MyUserControl);
                    Panel2.Controls.Add(p);

</code>

受保护的无效btnAddURL_单击(对象发送者,事件参数e)
{
if(FileUpload1.HasFile)
{
//ItemList是用于存储文件名的数组列表。
添加(FileUpload1.FileName);
showImage();
}
}
公共void showImage()
{
占位符p=新占位符();
//创建缩略图
FileUpload1.SaveAs(@“D:\ASP\Project\u Dec\u 16\RealEstate\SaveImage\”+FileUpload1.FileName);
System.Drawing.Image img1=System.Drawing.Image.FromFile(@“D:\ASP\Project\u Dec\u 16\RealEstate\SaveImage\”+FileUpload1.FileName);
System.Drawing.Image bmp2=img1.GetThumbnailImage(100100,null,IntPtr.Zero);
bmp2.Save(@“D:\ASP\Project\u Dec\u 16\RealEstate\SaveImage\thumbnail\L\”+FileUpload1.FileName);
//加载用户选择的图像
for(int i=0;i=ItemList.Count-1;i++)
{
控制MyUserControl;
//动态加载用户控件
MyUserControl=LoadControl(“MyControl.ascx”);
MyUserControl.ID=“MyUserControl”+cnt++;
//分配URL
Image MyImage=(Image)MyUserControl.FindControl(“Image1”);
//MyImage.ID=“Image”+cnt;
MyImage.ImageUrl=“~/SaveImage/thumbnail/L/”+ItemList[i].ToString();
//将控件添加到面板。
p、 控件。添加(MyUserControl);
第2组。对照组。添加(p);
问题: 1> 所有图片都在新的线路上,我希望它们彼此相邻。 2> 如何检测单击了哪个单选按钮,因为我有多个图像,而且所有图像都有单选按钮。 3> 如何从aspx页面捕获单选按钮的点击? 4> 如果有其他方法来实现这一点,请让我知道

在谷歌上搜索,但找不到解决方案。:( 提前谢谢

[更改后的代码] 在ascx文件中,我添加了以下代码

 public event EventHandler rd_ClickDemo;

 protected void deleteimage_CheckedChanged(object sender, EventArgs e)
    {
        rd_ClickDemo(sender, e);
    }
    protected void setascover_CheckedChanged(object sender, EventArgs e)
    {
        rd_ClickDemo(sender, e);
    }

In aspx file on click of a button i am doing the following.

 protected void btnAddURL_Click(object sender, EventArgs e)
    {

        if (FileUpload1.HasFile)
        {
           // Add file name to array list
            ItemList.Add(FileUpload1.FileName);

          //Add The URL in a text box.
            txtAddURL.Text = txtAddURL.Text + System.Environment.NewLine + System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName);
            //Image1.ImageUrl = System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName);        
            //this.Button1_Click(this, e);  

            showImage();
        }
    }

public void showImage()
{

        PlaceHolder p = new PlaceHolder();

// Create a Thumbnail Image.
        FileUpload1.SaveAs(@"D:\ASP\Project_Dec_16\RealEstate\SaveImage\" + FileUpload1.FileName);
        System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"D:\ASP\Project_Dec_16\RealEstate\SaveImage\" + FileUpload1.FileName);
        System.Drawing.Image bmp2 = img1.GetThumbnailImage(100, 100, null, IntPtr.Zero);
        bmp2.Save(@"D:\ASP\Project_Dec_16\RealEstate\SaveImage\thumbnail\L\" + FileUpload1.FileName);

//Load all images from array list.
        for (int i = 0; i <= ItemList.Count - 1; i++)
        {

            // Load user control dynamically
            MyUserControl = LoadControl("MyControl.ascx");

            MyUserControl.ID = "MyUserControl" + cnt++;

          // Find Radio Button
            RadioButton rdb1 = (RadioButton)MyUserControl.FindControl("deleteimage");
            RadioButton rdb2 = (RadioButton)MyUserControl.FindControl("setascover");

            //Attach Group Name.
            rdb1.GroupName = "G1" + cnt.ToString();
            rdb1.ID = "Rb_ID_D" + cnt.ToString();
            rdb1.AutoPostBack = true;
            rdb1.CheckedChanged +=new EventHandler(rdb1_CheckedChanged);

            //Attach Group Name.
            rdb2.GroupName = "G1"+ cnt.ToString();
            rdb2.ID = "Rb_ID" + cnt.ToString();
            rdb2.AutoPostBack = true;
            rdb2.CheckedChanged += new EventHandler(rdb1_CheckedChanged);
            //Image MyImage = (Image)MyUserControl.FindControl("Image1");
            // MyImage.ID = "Image" + cnt;

            //Attach URL to Image.
            Image MyImage = (Image)MyUserControl.FindControl("Image1");
            MyImage.ImageUrl = "~/SaveImage/thumbnail/L/" + ItemList[i].ToString();
            p.Controls.Add(MyUserControl);
            Panel2.Controls.Add(p);
       }
}
公共事件事件处理程序rd_单击演示;
受保护的void deleteimage_CheckedChanged(对象发送方,事件参数e)
{
rd_ClickDemo(发送方,e);
}
受保护的void setasover_CheckedChanged(对象发送方,事件参数e)
{
rd_ClickDemo(发送方,e);
}
在aspx文件中,单击一个按钮,我将执行以下操作。
受保护的无效btnAddURL_单击(对象发送者,事件参数e)
{
if(FileUpload1.HasFile)
{
//将文件名添加到数组列表
添加(FileUpload1.FileName);
//在文本框中添加URL。
txtAddURL.Text=txtAddURL.Text+System.Environment.NewLine+System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName);
//Image1.ImageUrl=System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName);
//此。按钮1\u单击(此,e);
showImage();
}
}
公共void showImage()
{
占位符p=新占位符();
//创建缩略图图像。
FileUpload1.SaveAs(@“D:\ASP\Project\u Dec\u 16\RealEstate\SaveImage\”+FileUpload1.FileName);
System.Drawing.Image img1=System.Drawing.Image.FromFile(@“D:\ASP\Project\u Dec\u 16\RealEstate\SaveImage\”+FileUpload1.FileName);
System.Drawing.Image bmp2=img1.GetThumbnailImage(100100,null,IntPtr.Zero);
bmp2.Save(@“D:\ASP\Project\u Dec\u 16\RealEstate\SaveImage\thumbnail\L\”+FileUpload1.FileName);
//从数组列表加载所有图像。

对于(int i=0;iOk),这里是第一个问题的解决方案:

1> 所有图像都在新线上,我希望它们彼此相邻。
Ans:您可以在自定义控件的div块的CSS中这样做,只需将float设置为左,如下所示

style="display:block;float:right;"
2> 如何检测单击了哪个单选按钮,因为我有多个图像,并且所有图像都有单选按钮。
Ans:您可以获取承载单选按钮的控件,这样您就可以使用单选按钮的NamingContainer属性来获取承载控件,在您的情况下,该控件必须是自定义控件

3> 如何从aspx页面捕获单选按钮的点击?
回答:在代码中执行以下操作:

首先,当您循环将自定义控件添加到面板2时,请将组名和事件处理程序附加到RadioButton。(假设您的自定义控件中已有单选按钮),然后处理CheckedChanged事件(我使用匿名委托处理事件)


看起来您试图将代码格式化为HTML,但不需要这样做,因为StackOverflow的编辑器足够聪明,可以这样做。。。
RadioButton rdb1 = (RadioButton)MyUserControl.FindControl("deleteimage");
RadioButton rdb2 = (RadioButton)MyUserControl.FindControl("setascover");

rd1.GrouprdoSelect2.GroupName = "radiobutton" + i.ToString() ;
rd1.ID = "radiobutton" + i.ToString() + i.ToString() + Convert.ToString(1);
rd1.AutoPostBack = true;
rd1.CheckedChanged += (thesender, ev) => {
       RadioButton rb =  (RadioButton) thesender;
       MyUserControl mcl = rb.NamingContainer as MyUserControl;
       //Perform your task based on the fact of mcl.ID
   }

rd2.GrouprdoSelect2.GroupName = "radiobutton" + i.ToString() ;
rd2.ID = "radiobutton" + i.ToString() + i.ToString() + Convert.ToString(2);
rd2.AutoPostBack = true;
rd2.CheckedChanged += (thesender, ev) => {
       RadioButton rb =  (RadioButton) thesender;
       MyUserControl mcl = rb.NamingContainer as MyUserControl;
       //Perform your task based on the fact of mcl.ID
   }