多窗体:新建 / 删除窗体,项目 1 登录示例;标识符支持中文
- 新建窗体:生成与 VS 新建窗体相同的 X.cs 和 X.Designer.cs,沿用工程命名空间; 删除窗体(启动窗体不能删) - 标签页按窗体分组,启动窗体排在最前并默认打开 - 运行时点哪个窗口哪个到最前;消息框始终在所有窗口之上 - 示例:项目 1 任务 1 登录与增加用户,两个窗体的 Designer.cs 由设计器引擎生成; 修正书上未声明的 change 变量、关闭后重复 Show 已释放窗体的问题 - 设计器的正则支持中文控件名、类名、命名空间 - 修正:切换窗体时属性窗口的名称没有刷新 - 测试:多窗体端到端测试;新窗体模板测试 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
02d2f0eabc
commit
8feda289de
19 files changed
+739
-36
No files matched your search
@@ -1,3 +1,8 @@
|
||||
<script lang="ts">
|
||||
let topZ = 1
|
||||
const nextZ = () => ++topZ
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
// 一个 WinForms 窗体:标题栏 + 客户区。窗体可以拖动标题栏移动。
|
||||
import { computed, ref } from 'vue'
|
||||
@@ -19,6 +24,12 @@ const childrenTopLast = computed(() => [...props.form.children].reverse())
|
||||
const clientSize = computed(() => (p.value.ClientSize as SizeValue | undefined) ?? { width: 300, height: 300 })
|
||||
|
||||
const position = ref({ x: 24 + props.offset * 32, y: 24 + props.offset * 32 })
|
||||
|
||||
// 点哪个窗口,哪个窗口到最前面(所有窗体共用一个递增的层级)
|
||||
const zIndex = ref(nextZ())
|
||||
function activate() {
|
||||
zIndex.value = nextZ()
|
||||
}
|
||||
let dragStart: { x: number; y: number; px: number; py: number } | undefined
|
||||
|
||||
function startDrag(event: PointerEvent) {
|
||||
@@ -41,7 +52,8 @@ function close() {
|
||||
v-show="p.Visible !== false"
|
||||
class="wf-window"
|
||||
:class="{ 'wf-window-modal': modal }"
|
||||
:style="{ left: `${position.x}px`, top: `${position.y}px` }"
|
||||
:style="{ left: `${position.x}px`, top: `${position.y}px`, zIndex: modal ? undefined : zIndex }"
|
||||
@pointerdown.capture="activate"
|
||||
>
|
||||
<div v-if="!borderless" class="wf-titlebar" @pointerdown="startDrag" @pointermove="drag" @pointerup="dragStart = undefined">
|
||||
<span class="wf-title">{{ displayText(p.Text) }}</span>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
}
|
||||
|
||||
.wf-window-modal {
|
||||
z-index: 10;
|
||||
z-index: 100000;
|
||||
}
|
||||
|
||||
.wf-titlebar {
|
||||
@@ -244,7 +244,8 @@
|
||||
.wf-modal-backdrop {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 20;
|
||||
/* 在所有窗体(包括模态窗体)之上 */
|
||||
z-index: 200000;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
Reference in new issue
Block a user