私はいくつかの問題を抱えていますが、今私はそれを解決する方法がわかりません。ウェブコントロールは、毎秒ラベルによって表される時計を単に更新するだけである。私の問題は、Webコントロールが「Formato」というプロパティを公開しているため、ユーザーは12時間または24時間の形式で表示することができます。ASP.NETカスタムWebコントロール
namespace Ejercicio2RelojControl
{
public enum _FormatoHora
{
Doce,
Veinticuatro
}
[DefaultProperty("FormatoHora")]
[ToolboxData("<{0}:Ejercicio2RelojControl runat=server></{0}:Ejercicio2RelojControl>")]
[ToolboxBitmap(typeof(Ejercicio2RelojControl), "Ejercicio2RelojControl.Ejercicio2RelojControl.ico")]
//[Designer("Ejercicio2RelojControl.Ejercicio2RelojControlDesigner, Ejercicio2RelojControl")]
public class Ejercicio2RelojControl : WebControl
{
public Ejercicio2RelojControl()
{
}
[
//Bindable(true),
Category("Appearance"),
//DefaultValue(_FormatoHora.Doce),
Description(""),
]
public virtual _FormatoHora FormatoHora
{
get
{
//object t = ViewState["FormatoHora"];
//return (t == null) ? _FormatoHora.Doce : (_FormatoHora)t;
object obj2 = this.ViewState["_FormatoHora"];
if (obj2 != null)
{
return (_FormatoHora)obj2;
}
return _FormatoHora.Doce;
}
set
{
ViewState["_FormatoHora"] = value;
}
}
//Create one TimerControl
Timer timer = new Timer();
private Label clockLabel = new Label();
// Declare one Updatepanel
UpdatePanel updatePanel = new UpdatePanel();
// Now override the Load event of Current Web Control
protected override void OnLoad(EventArgs e)
{
//Text = "hh:mm:ss";
// Create Ids for Control
timer.ID = ID + "_tiker";
clockLabel.ID = ID + "_l";
// get the contentTemplate Control Instance
Control controlContainer = updatePanel.ContentTemplateContainer;
// add Label and timer control in Update Panel
controlContainer.Controls.Add(clockLabel);
controlContainer.Controls.Add(timer);
// Add control Trigger in update panel on Tick Event
updatePanel.Triggers.Add(new AsyncPostBackTrigger() { ControlID = timer.ID, EventName = "Tick" });
updatePanel.ChildrenAsTriggers = true;
// Set default clock time in label
clockLabel.Text = DateTime.Now.ToString("h:mm:ss tt");
//clockLabel.Text = DateTime.Now.ToString("H:mm:ss");
// Set Interval
timer.Interval = 1000;
// Add handler to timer
timer.Tick += new EventHandler<EventArgs>(timer_Tick);
updatePanel.RenderMode = UpdatePanelRenderMode.Block;
//Add update panel to the base control collection.
base.Controls.Add(updatePanel);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(FormatoHora);
}
void timer_Tick(object sender, EventArgs e)
{
// Set current date time in label to move current at each Tick Event
clockLabel.Text = DateTime.Now.ToString("h:mm:ss tt");
//clockLabel.Text = DateTime.Now.ToString("H:mm:ss");
}
}
}
今ではASPでカスタムコントロールをテストする時間だ:これはスペイン語DOCEで12を意味し、Veinticuatroこれは、サーバーコントロールのコードである24を意味列挙型で行われています.net Webアプリケーション。
<cc1:Ejercicio2RelojControl ID="Ejercicio2RelojControl1" runat="server" />
素晴らしい作品!私はプロパティを追加するときには "フォーマトは、" コンパイル時に失敗します。
<cc1:Ejercicio2RelojControl ID="Ejercicio2RelojControl1" runat="server" Formato="Doce" />
コンパイラエラーメッセージ:CS0117: 'Ejercicio2RelojControl.Ejercicio2RelojControlは' 'FormatoHora'の定義が含まれていません。
コンパイル時にFormatoがWebアプリケーションをクラッシュさせる理由は何ですか?
ありがとうございます。
EDIT:
名前空間Ejercicio2RelojControl { パブリック列挙FormatoHora { DOCE、 Veinticuatro}私はパブリックプロパティを変更したあなたが見ることができるように
[DefaultProperty("FormatoHora")]
[ToolboxData("<{0}:Ejercicio2RelojControl runat=server></{0}:Ejercicio2RelojControl>")]
public class Ejercicio2RelojControl : WebControl, INamingContainer
{
public FormatoHora FormatoHora
{
get
{
object obj2 = this.ViewState["FormatoHora"];
if (obj2 != null)
{
return (FormatoHora)obj2;
}
return FormatoHora.Doce;
}
set
{
ViewState["FormatoHora"] = value;
}
}
。今、エラーが変更されました。
コンパイラエラーメッセージ:CS0120:オブジェクト参照が非静的フィールド、メソッド、またはプロパティ感謝「Ejercicio2RelojControl.Ejercicio2RelojControl.FormatoHora.get」
すべてのヘルプのために必要とされる次の通りです。おかげ
EDIT 2:
私はこの問題は、{}のセットであることを発見しました。私がコメントすれば、すべてうまくいきますが、get {}しか実装されていないために読み込み専用であるため、FormatoHoraを12と24の間で変更することはできません。 set {}の実装に関する助け?
何かが同期していません。Webコントロールが 'Formato'というプロパティを公開しているとしますが、コードサンプルのプロパティが' FormatoHora'で、カスタムコントロールサンプルに 'Formato'を設定していて、' FormatoHora'が存在しないというエラーメッセージが表示されます。どちらですか? – mellamokb
カスタムコントロールを少し編集しました。 – user354427
私は問題がセット{}にあることを発見しました。私がコメントすれば、すべてうまくいきますが、get {}しか実装されていないために読み込み専用であるため、FormatoHoraを12と24の間で変更することはできません。 set {}の実装に関する助け? – user354427