// 假设这些类型和接口的定义 interface IPage { // 这里可以定义 IPage 接口的具体属性和方法 } interface TipAdornerPlacement { // 这里可以定义 TipAdornerPlacement 接口的具体属性和方法 } interface TipAdorner { Placement: TipAdornerPlacement; Message: string; // 这里可以定义 TipAdorner 接口的其他方法 } interface FocusManager { GetManagerInstance(target: any): FocusManager | null; CurrentFocusedElement: any; SetFocus(element: any): void; IsFocusContinue: boolean; } enum FocusHandledResult { System } class ControlHelper { static ShowTip(target: any, placement: TipAdornerPlacement, message: string): boolean { if (target instanceof IPage) { const fm = FocusManager.GetManagerInstance(target); if (!fm || !fm.CurrentFocusedElement) { return false; } target = fm.CurrentFocusedElement; } // 这里假设可以通过某种方式获取 AdornerLayer const layer = this.getAdornerLayer(target); if (layer) { this.RemoveTipAdorner(target, layer); const tip: TipAdorner = { Placement: placement, Message: message ? message.trim() : "输入错误" }; if (target instanceof HTMLInputElement) { target.select(); } // 这里假设可以添加装饰器 this.addTipToLayer(tip, layer); target.addEventListener('blur', () => this.OnLostFocus(target)); } return false; } static ShowTipSimple(target: any, message: string): boolean { // 假设存在一个默认的底部位置 const defaultPlacement = {} as TipAdornerPlacement; return this.ShowTip(target, defaultPlacement, message); } static RemoveTipAdorner(target: any, layer: any): void { if (!layer) { return; } const adorners = this.getAdorners(target, layer); if (!adorners) { return; } adorners.forEach((ad: any) => { if (this.isTipAdorner(ad)) { this.removeAdornerFromLayer(ad, layer); } }); } static OnLostFocus(target: any): void { target.removeEventListener('blur', () => this.OnLostFocus(target)); const layer = this.getAdornerLayer(target); this.RemoveTipAdorner(target, layer); } static RemoveTip(target: any): void { if (!target) { return; } const layer = this.getAdornerLayer(target); if (layer) { this.RemoveTipAdorner(target, layer); } } static SetFocus(target: IPage, element?: any): void { const focusManager = FocusManager.GetManagerInstance(target); if (!focusManager) { return; } if (element) { focusManager.SetFocus(element); } focusManager.IsFocusContinue = false; } static get EmptyMouseHandled(): (sender: any, e: any) => void { return (sender, e) => { }; } static get EmptyFocusHandled(): (sender: any, e: any) => FocusHandledResult { return (sender, e) => { return FocusHandledResult.System; }; } // 以下是模拟的辅助方法,需要根据实际情况实现 private static getAdornerLayer(target: any): any { return null; } private static getAdorners(target: any, layer: any): any[] { return []; } private static isTipAdorner(ad: any): boolean { return false; } private static addTipToLayer(tip: TipAdorner, layer: any): void { // 实现添加装饰器的逻辑 } private static removeAdornerFromLayer(ad: any, layer: any): void { // 实现移除装饰器的逻辑 } } export default ControlHelper;